1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 46

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

19.11.2011, 00:49. Показов 4321. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru