Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Основы работы с исключениямиСодержание книги
Поиск на нашем сайте
Принимая во внимание, что .NET Framework включает большое количество предопределенных классов исключений, возникает вопрос: как их использовать в коде для перехвата ошибочных условий? Для того чтобы справиться с возможными ошибочными ситуациями в коде С#, программа обычно делится на блоки трех разных типов:
Блок try-catch
Основу обработки исключительных ситуаций в С# составляет пара ключевых слов try и catch. Эти ключевые слова действуют совместно и не могут быть использованы порознь. Ниже приведена общая форма определения блоков try-catch для обработки исключительных ситуаций:
try { // Блок кода, проверяемый на наличие ошибок } catch (ExceptTypel exOb) { // Обработчик исключения типа ExceptTypel // exOb.Message будет содержать текст исключения ) catch (ExceptType2 exOb) { // Обработчик исключения типа ExceptType2 // exOb.Message будет содержать текст исключения }
Где ExceptType — это тип возникающей исключительной ситуации. Когда исключение генерируется оператором try, оно перехватывается составляющим ему пару оператором catch, который затем обрабатывает это исключение. В зависимости от типа исключения выполняется и соответствующий оператор catch. Так, если типы генерируемого исключения и того, что указывается в операторе catch, совпадают, то выполняется именно этот оператор, а все остальные пропускаются. Когда исключение перехватывается, переменная исключения exOb получает свое значение. На самом деле указывать переменную exOb необязательно. Так, её необязательно указывать, если обработчику исключений не требуется доступ к объекту исключения, что бывает довольно часто. Для обработки исключения достаточно и его типа. Следует, однако, иметь в виду, что если исключение не генерируется, то блок оператора try завершается как обычно, и все его операторы catch пропускаются. Выполнение программы возобновляется с первого оператора, следующего после завершающего оператора catch. Таким образом, оператор catch выполняется лишь в том случае, если генерируется исключение. Пустой оператор catch без параметра ловит все возможные ошибки.
Давайте рассмотрим пример, в котором будем обрабатывать исключение, возникающее при делении числа на 0: using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static int MyDel(int x, int y) { return x / y; }
static void Main() { link1: try { Console.Write("Введите x: "); int x = int.Parse(Console.ReadLine()); Console.Write("Введите y: "); int y = int.Parse(Console.ReadLine()); int result = MyDel(x, y); Console.WriteLine("Результат: " + result); } // Обрабатываем исключение возникающее при делении на ноль catch (DivideByZeroException) { Console.WriteLine("Деление на \"0\" зафиксировано\n"); goto link1; } // Обрабатываем исключение при некорректном вводе числа в консоль catch (FormatException) { Console.WriteLine("Было введено не число\n"); goto link1; } Console.WriteLine("Для продолжения нажмите любую клавишу..."); Console.ReadKey(); } } }
Рис. 2. 1. Результат работы кода выше
Данный простой пример наглядно иллюстрирует обработку исключительной ситуации при делении на «0» (DivideByZeroException), а так же пользовательскую ошибку при вводе не числа (FormatException).
|
||||
Последнее изменение этой страницы: 2016-12-28; просмотров: 275; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.175.191 (0.005 с.) |