Модуль 11 Обработка исключений. Обзор модуля В этом


Модуль 11 Обработка исключений

Обзор модуля В этом модуле вы изучите Исключения Вызов и перехват исключений Вложенные блоки try и использование нескольких блоков catch Пользовательские исключения

Занятие 1 - Исключения На первом занятии, Исключения, вы изучите: Понятие исключения. Описание исключений в C#. Список часто используемых классов исключений.

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

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

Исключения системного уровня Исключения системного уровня вызываются (выбрасываются) системой. Исключения уровня приложения Исключения уровня приложения вызываются пользовательскими приложениями. Исключения в C# C# может обрабатывать различные типы исключений с помощью соответствующих выражений обработки исключений. Это позволяет обрабатывать два основных типа исключений: Исключения системного уровня Исключения уровня приложения

Свойства класса “Exception” Класс System.Exception является базовым классом, позволяющим обработку исключений в C#. Класс System.Exception содержит открытые и закрытые методы, наследуемые другими классами исключений.

Часто используемые классы исключений Класс System.Exception имеет несколько производных классов исключений для обработки различных типов исключений. Иерархия отображает различные классы исключений в пространстве имен System .

Классы исключений Пространство имен System содержит различные поддерживаемые в C# классы исключений. Тип обрабатываемого исключения зависит от указанного класса исключения.

Занятие 2 - Вызов и перехват исключений На втором занятии, Вызов и перехват исключений, вы изучите: Использование блока catch . Использование выражение throw. Использование блока finally .

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

Обработка исключений реализуется в C# конструкцией try-catch. Эта конструкция состоит из двух блоков - try и catch. Блок try включает выражения, которые могут вызвать исключения. Блок catch идет за блоком try и может содержать или не содержать параметров. try { // код программы } catch[(

Блок catch может обрабатывать все типы исключений. Тип обрабатываемого блоком catch исключения зависит от указанного класса исключения. Общий блок catch может обрабатывать все типы исключений. Недостаток общего блока catch в том, что нет экземпляра исключения, так что неясно, какое действие необходимо выполнить для обработки исключения. Error: System.IndexOutOfRangeException: Index was outside the bounds of the array. at Project_New.Exception_Handling.Students.Main(String[] args) in D:Exception HandlingStudents.cs:line 17 using System; class Students { string[] _names = { “James”, “John”, “Alexander” }; static void Main(string[] args) { Students objStudents = new Students(); try { objStudents._names[4] = “Michael”; } catch (Exception objException) { Console.WriteLine(“Error: “ + objException); } } } Общий блок “catch” Пример Вывод

Выражение throw в C# позволяет программно вызывать исключения с помощью ключевого слова throw. Выражение throw принимает экземпляр конкретного исключения в качестве параметра. При вызове исключения с помощью ключевого слова throw, исключение обрабатывается блоком catch. using System; class Employee { static void ThrowException(string name) { if (name == null) { throw new ArgumentNullException(); } } static void Main(string [] args) { Console.WriteLine(“Throw Example”); try { string empName = null; ThrowException(empName); } catch (ArgumentNullException objNull) { Console.WriteLine(“Exception caught: “ +objNull); } } } Throw Example Exception caught: System.ArgumentNullException: Value cannot be null. at Exception_Handling.Employee.ThrowException(String name) in D:Exception HandlingEmployee.cs: line 13 at Exception_Handling.Employee.Main(String[] args) in D:Exception HandlingEmployee.cs:line 24 Выражение “throw” throw exceptionObject; Синтаксис где, throw: Указывает, что исключение вызывается программно. exceptionObject: Экземпляр конкретного класса исключений. . Пример Вывод

Бывает необходимо выполнить ряд инструкций вне зависимости от того, возникло исключение или нет. В этих случаях используется блок finally. Блок finally является опциональным и должен находиться после блока catch. Он содержит выражения, выполняемые вне зависимости от факта возникновения исключения. Exception caught: System.DivideByZeroException: Attempted to divide by zero. at DivisionError.Main(String[] args) This finally block will always be executed Выражение “finally” finally { // завершающий код } Синтаксис где, finally: Указывает, что выражения в блоке должны быть выполнены вне зависимости от того, произошло исключение или нет. Пример Вывод using System; class DivisionError { static void Main(string[] args) { int numOne = 133; int numTwo = 0; int result; try { result = numOne / numTwo; } catch (DivideByZeroException objDivide) { Console.WriteLine(“Exception caught: “ + objDivide); } finally { Console.WriteLine(“This finally block will always be executed”); } } }

Занятие 3 - Вложенные блоки try и несколько блоков catch На третьем занятии, Вложенные блоки try и несколько блоков catch , вы изучите: Описание вложенных блоковtry. Описание использования нескольких блоков catch.

Вложенные блоки “try” Вложенные блоки try состоят из нескольких конструкций try-catch. Вложенный блок try начинается с блока try, называемого внешним блоком try. Внешний блок try содержит несколько блоков try, называемых внутренними блоками try. try { // внешний блок try try { // внутренний блок try } catch { // внутренний блок catch } //Является опциональным. finally { // внутренний блок finally } } catch { // Внешний блок catch } //Является опциональным. finally { // внешний блок finally } Синтаксис static void Main(string[] args) { string[] names = {“John”, “James”}; int numOne = 0; int result; try { Console.WriteLine(“This is the outer try block”); try { result = 133 / numOne; } catch (ArithmeticException objMaths) { Console.WriteLine(“Divide by 0 “ + objMaths); } names[2] = “Smith”; } catch (IndexOutOfRangeException objIndex) { Console.WriteLine(“Wrong number of arguments supplied ” + objIndex); } } Пример
![static void Main(string[] args) { string[] names = { “John”, “James” }; int numOne static void Main(string[] args) { string[] names = { “John”, “James” }; int numOne](https://present5.com/customparser/91664400_142131531 --- expc_module_11ru_1.ppt/slide_18.jpg)
static void Main(string[] args) { string[] names = { “John”, “James” }; int numOne = 10; int result = 0; int index = 0; try { index = 3; names[index] = “Smith”; result = 130 / numOne; } catch (DivideByZeroException objDivide) { Console.WriteLine(“Divide by 0 “ + objDivide); } catch (IndexOutOfRangeException objIndex) { Console.WriteLine(“Wrong number of arguments supplied “ + objIndex); } catch (Exception objException) { Console.WriteLine(“Error: “ + objException); } Console.WriteLine(result); } Несколько блоков “catch” Блок try может вызывать несколько типов исключений, необходимых для обработки блоком catch. C# позволяет определять несколько блоков catch для обработки различных типов исключений, вызываемых блоком try . В зависимости от типа исключения, вызываемого блоком try, выполняется соответствующий (если есть) блок catch. try { // код программы } catch (

Занятие 4 - Пользовательские исключения На последнем занятии, Пользовательские исключения, вы изучите: Описание пользовательских исключений и их назначение. Объяснение реализации пользовательских исключений.

Пользовательские исключения Эти исключения позволяют распознавать случаи неожиданных событий в заданных программах и выводить пользовательские сообщения. Они позволяют упрощать и улучшать процесс обработки ошибок в программе. Они могут быть созданы для обработки исключений, вызываемых CLR так же, как и вызванных пользовательскими приложениями.

Пользовательские исключения могут быть созданы наследованием от класса Exception, класса SystemException или класса ApplicationException. Класс SystemException обрабатывает исключения от CLR. Класс ApplicationException обрабатывает исключения для пользовательских приложений. This illustrates creation and catching of custom exception Реализация пользовательских исключений public class CustomMessage : Exception { public CustomMessage (string message) : base(message) { } } public class CustomException { static void Main(string[] args) { try { throw new CustomMessage (“This illustrates creation and catching of custom exception”); } catch(CustomMessage objCustom) { Console.WriteLine(objCustom.Message); } } } Пример Вывод

Резюме Исключения Исключения - это ошибки времени выполнения. Вызов и перехват исключений Выражение throw позволяет программно вызывать исключения. Вложенные блоки try и использование нескольких блоков catch Вложенные блоки try позволяют иметь в блоке try конструкцию try-catch-finally. Несколько блоков catch могут быть реализованы при возникновении в блоке try нескольких типов исключений. Пользовательские исключения Пользовательские исключения позволяют обрабатывать системные и специфичные для приложений ошибки времени выполнения.

expc_module_11ru_1.ppt
- Количество слайдов: 22