Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 46

C# исключительная ситуация

19.11.2011, 00:49. Показов 4288. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в C# сделать обработку нескольких исключительных ситуаций! Например:
C#
1
2
3
4
5
try {
string a=textbox1.text; // путь
string b=textbox2.text; // логин
string c=textbox3.text; // пароль
}
Как в catch вывести сообщение какое именно поле не заполнено?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2011, 00:49
Ответы с готовыми решениями:

Исключительная ситуация на точку
Есть у нас флоатавская переменная, если ввести значение из консоли через запятую (2,2), то всё норм, а если ввести через точку (2.2), то...

Рефлексия. Исключительная ситуация
Доброго времени суток всем , я сейчас изучаю рефлексию , написал маленькую программу .В коде где-то(19 строка) ошибка ,пишет исключение...

Исключительная ситуация при вводе даты
Всем привет! Во время ввода даты неправильного формата происходит исключение. Допустим дата 2006 13 13, год месяц число. Прошу помощи...

12
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.11.2011, 01:02
Цитата Сообщение от ZXCV123 Посмотреть сообщение
Как в catch вывести сообщение какое именно поле не заполнено?
try/catch для каждого присваивания отдельно.

А вообще не устану повторять: если есть возможность избежать исключительной ситуации - пользуйтесь ею.
В данном случае просто сделайте проверку на ввод через string.IsNullOrEmpty(textBox1.Text)
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.11.2011, 02:23
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string[] arr = new string[] { "some text1", "some text2", "" }; 
            
try {
    if (string.IsNullOrEmpty (arr [0]))
         throw new Exception ("arr[0] is null or empty");
    else if (string.IsNullOrEmpty (arr [1]))
         throw new Exception ("arr[1] is null or empty");
    else if (string.IsNullOrEmpty (arr [2]))
         throw new Exception ("arr[2] is null or empty");
    else {
         string a = arr [0];
         string b = arr [1];
         string c = arr [2];
    }
}
catch (Exception e) {
    //...
}
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
16.03.2013, 10:47
Есть у меня консольное приложение. В нём есть такая строка float vr = Convert.ToSingle(Console.ReadLine());
Если ввести значение через запятую то всё норм, но если через точку то выдаёт ошибку про то что строка имела неверный форма.
Подскажите пожалуйста как в данном случае сделать исключительную ситуацию.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
16.03.2013, 11:06
Цитата Сообщение от qwertun Посмотреть сообщение
но если через точку то выдаёт ошибку про то что строка имела неверный форма
Может просто искать точку и менять её на запятую? Вроде ещё как-то можно решить эту проблему, не помню, но сталкивался.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
16.03.2013, 11:08
Цитата Сообщение от Casper-SC Посмотреть сообщение
Может просто искать точку и менять её на запятую? Вроде ещё как-то можно решить эту проблему, не помню, но сталкивался.
если б поле vr было типа string то можно было бы попробовать, но оно типа float
как поступить в данной ситуации?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
16.03.2013, 11:28
qwertun, что подразумевается под фразой "как в данном случае сделать исключительную ситуацию"?
Что должно происходить при использовании точки вместо запятой (или наоборот)?
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
16.03.2013, 11:30
Цитата Сообщение от kolorotur Посмотреть сообщение
Что должно происходить при использовании точки вместо запятой (или наоборот)?
Нужно чтобы при вводе значения через точку программа сообщила нам что-нибуть типа "Ошибка! Порробуйте еще раз." и снова предложила ввести значение
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
16.03.2013, 11:32
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Linq;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            float vr = GetFloatValueFromUser("Введите вещественное число");
            Console.WriteLine("Вы ввели {0}", vr);
            Console.ReadKey();
        }
 
        private static float GetFloatValueFromUser(string message)
        {
            float userInput = 0f;
            bool receved = false;
            do
            {
                if (!string.IsNullOrWhiteSpace(message))
                    Console.WriteLine(message);
                try
                {
                    string number = Console.ReadLine();
                    if (number.All(d => char.IsDigit(d) || char.IsPunctuation(d)))
                    {
                        if (number.Contains('.'))
                            number = number.Replace('.', ',');
                    }
 
                    if(float.TryParse(number, out userInput))
                        receved = true;
                    else
                        WriteErrorMessage("\nНеверный формат.Попробуйте снова!!!\n");
                }
                catch (Exception ex)
                {
                    WriteErrorMessage(ex.Message + "\nПопробуйте снова!!!\n");
                }
            }
            while (!receved);
            return userInput;
        }
 
        private static void WriteErrorMessage(string text)
        {
            ConsoleColor currentColor = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(text);
            Console.ForegroundColor = currentColor;
        }
    }
}
Добавлено через 55 секунд
Цитата Сообщение от qwertun Посмотреть сообщение
Нужно чтобы при вводе значения через точку программа сообщила нам что-нибуть типа "Ошибка! Порробуйте еще раз." и снова предложила ввести значение
А-а-а, ну я думал, что нужно заменять её. Ну из моего кода удалить проверку и замену и всё, всё будет как ты хотел.
1
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
16.03.2013, 11:41
Цитата Сообщение от Casper-SC Посмотреть сообщение
if (number.All(d => char.IsDigit(d) || char.IsPunctuation(d)))
а можете объяснить что это за условие?

Добавлено через 2 минуты
и если можно поподробнее всё что происходит в функции GetFloatValueFromUser
0
Заблокирован
16.03.2013, 11:47
Цитата Сообщение от ZXCV123 Посмотреть сообщение
Как в C# сделать обработку нескольких исключительных ситуаций! Например:
C#
1
2
3
4
5
try {
string a=textbox1.text; // путь
string b=textbox2.text; // логин
string c=textbox3.text; // пароль
}
Как в catch вывести сообщение какое именно поле не заполнено?
try{}

catch(){}

catch(){}
...
catch(Systedm.Exception exp){}

Можно вкладывать друг в друга, и даже в блоке catch() генерировать исключение, тогда оно распространяется методом пузырька, пока не найдет подходящий обработчик.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.03.2013, 12:31
qwertun, используйте функцию
int.TryParse
она пытается распарсить строку, в случае, если получилось преобразование, то возвращает true, в противном случае - false
C#
1
2
3
4
5
6
int x;
do
{
   Console.WriteLine("Введите число x");
   string s = Console.ReadLine();
} while (!int.TryParse(s, out x));
Добавлено через 1 минуту
Если нужно парсить float-значение, то простой заменой int на double в двух строчках получаем нужный эффект
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
16.03.2013, 12:50
ZXCV123,
Если Вас не устраивает вариант colorotur, и все таки нужны исключения
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                TextBox[] arrtb = { textbox1, textbox2, textbox3 };
                  foreach (var tb in arrtb)
                  if (tb.Text == string.Empty) throw new Exception(tb.Name);
            }
            catch (Exception tbEx.Message)
            {
                MessageBox.Show(tbEx.Message + " не заполнен");
            }
        }
Добавлено через 5 минут
Едрит батон! На дату то создания темы я и не посмотрел
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2013, 12:50
Помогаю со студенческими работами здесь

Не выдавать сообщений об ошибках, если возникла исключительная ситуация
И сново здравствуйте, вообщем я разобрался с программой, теперь она заходит в AppData, ищет папку и удаляет ее. Но вот незадача, если...

исключительная ситуация
подскажите как сделать проверку на правильность введенных данных (я пытался делать через исключения однако не работает нужно проверить...

Исключительная ситуация
Помогите написать исключительную ситуацию. procedure TForm1.Button1Click(Sender: TObject); var n,i:integer; begin ...

Исключительная ситуация
это полностью рабочая прога списки студентов( добавление удаление вывод) как сделать чтобы когда я добавляю нового студента(когда пишу...

Исключительная ситуация
Ребят вопрос касаемо кода: Наберите текст программы приведенного примера обработки исключительных ситуаций и откомпилируйте его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru