Обработка пользовательских исключений (Console Application) - C#

Узнай цену своей работы

Формулировка задачи:

День добрый! Прошерстила гугл, насколько смогла, но ответа на свой вопрос так и не нашла. Есть у меня проект, в котором я впервые использовала пользовательские исключения. Т.к. тело Main() содержит бесконечный цикл (программа работает по типу командной строки), то в случае неверно введенных данных мне нужно не завершать всю программу целиком, а завершить только эту итерацию. Потому в случае передачи невалидных значений экземпляру некоторого класса выбрасывается пользовательское исключение, ктр я ловлю в теле Main() и таким образом завершаю итерацию цикла while(true). Так вот, есть у меня 2 класса с идентичными конструкторами (для простоты чтения сигнатуры упрощены):
Листинг программы
  1. public class Data1
  2. {
  3. //...
  4. public Data1(string str1, string str2)
  5. {
  6. if (str1 != string.Empty)
  7. {
  8. //
  9. }
  10. else
  11. {
  12. throw new EmptySettingsException();
  13. }
  14. if (str2 != string.Empty)
  15. {
  16. //
  17. }
  18. else
  19. {
  20. throw new EmptySettingsException();
  21. }
  22. }
  23. //...
  24. }
  25. public class Data2
  26. {
  27. //...
  28. public Data2(string filename)
  29. {
  30. if (filename != string.Empty)
  31. {
  32. //
  33. }
  34. else
  35. {
  36. throw new EmptyFilenameException();
  37. }
  38. //...
  39. }
В теле Main() имеем:
Листинг программы
  1. private static void Main(string[] args)
  2. {
  3. while (true)
  4. {
  5. //..
  6. try
  7. {
  8. Data1 data1 = new Data1(str1, str2);
  9. Data2 data2 = new Data2(filename);
  10. //..
  11. }
  12. catch (EmptyFilenameException)
  13. {
  14. Console.WriteLine("Filename cannot be empty.\n");
  15. }
  16. catch (EmptySettingsException)
  17. {
  18. Console.WriteLine("Settings cannot be empty.\n");
  19. }
  20. }
  21. }
Так вот: EmptyFilenameException отлавливается, в консоль выводится сообщение "Filename cannot be empty.". При возникновении EmptySettingsException среда тыкает меня носом в строку
Листинг программы
  1. throw new EmptySettingsException();
и утверждает, что исключение данного типа не обрабатывается в коде пользователя. Тела исключений стандартные (взято из MSDN), ничего кроме строки сообщения в исключение не передается. В чем корень проблемы? P.S. В программе 7 типов пользовательских исключений, соответственно, в Main() 7 блоков catch(). Обрабатываются все, кроме указанного выше, причем вызываются исключения и в конструкторах, и в public и private методах классов. P.P.S. Если по неопытности опустила какую-то значимую конкретику - напишите, я добавлю информацию. Заранее всем спасибо!

Решение задачи: «Обработка пользовательских исключений (Console Application)»

textual
Листинг программы
  1. catch (Exception ex)
  2.     {
  3.         Console.WriteLine(ex.Message);
  4.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы