Организация обработки исключений в С#

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002131.docx

Организация обработки исключений в С#

Основная идея обработки исключений состоит в том, что в программе можно определить блок кода, именуемый обработчиком исключений, который автоматически будет получать управление при возникновении определенной ошибки. Обработчик исключений оформляется в виде catch-блока.

В этом случае не обязательно проверять результат выполнения ка- ждой конкретной операции или метода вручную.

 

Программные инструкции, которые нужно проконтролировать на предмет исключений, помещаются в try-блок.


Программа


Метод, CLR


 

Ошибка

Система динами- ческого управле- ния

 


 

Рис. 1. Без обработки исключения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.2. Обработка исключения

Программа


Аварийное завершение


 

Метод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.3 Безошибочное выполнение


В С# исключения представляются классами, выведенными из встро- енного класса исключений Exception.

 

Наследниками класса Exception являются классы SystemException и

ApplicationException, которые делят исходные исключения на две группы.

 

 


 

Формат записи try/catch-блоков:

try

{

// Блок кода, подлежащий проверке на наличие ошибок.

}

 

catch   ( ExcepType1  e )

{

// Обработчик исключения типа ExcepTypel.

}

 

catch ( ExcepType2 e )

{

// Обработчик исключения типа ЕхсерТуре2.

}

 

ЕхсерТуре это тип сгенерированного исключения.

е экземпляр типа ЕхсерТуре.

 

Варианты catch-блоков:

catch   ( ExcepType )

{

// Обработчик исключения типа ExcepTypel.

}

 

catch ( IOException e )

{

// Обработчик всех исключений ввода-вывода

}

 

catch ( SystemException e )

{


// Обработчик всех системных исключений

}

 

catch ( Exception e )

{

// Обработчик всех исключений.

// Передается информация об исключении

}

 

catch ()

{

// Обработчик всех исключений.

// Информация об исключении не передается

}

 

Системные исключения класса SystemException

 

Производный класс

Описание

ArithmeticException

Ошибка в арифметических операциях или операциях преобразования (пре- док DivideByZeroException и OverFlowException)

ArrayTypeMismatchException

Тип   сохраняемого   значения   несо- вместим с типом массива

DivideByZeroException

Попытка деления на нуль

FormatException

Попытка передать в метод аргумент неверного формата

IndexOutOfRangeException

Индекс массива оказался вне диапа- зона

InvalidCastException

Неверно   выполнено   динамическое приведение типов

OutOfMemoryException

Обращение к оператору new оказа- лось неудачным из-за недостаточного объема свободной памяти

OverflowException

Имеет место арифметическое пере- полнение и используется оператор checked

StackOverflowException

Переполнение стека

NullReferenceException

Была сделана попытка использовать нулевую ссылку, т.е. ссылку, которая не указывает ни на какой объект

IOException

Ошибка ввода-вывода

TypeInitializationExeption

Отсутствует блок catch для обработки исключения, сгенерированного ста- тическим конструктором

 

 


 

Посмотрите также