С# — обработка исключений
Исключением является проблема, возникающая во время выполнения программы. Исключение C# – это реакция на исключительное обстоятельство, возникающее во время работы программы, например на попытку деления на ноль.
Исключения позволяют передавать управление из одной части программы в другую. Обработка исключений C# основана на четырех ключевых словах:try. , поймать , наконец и бросить .
-
попробовать − Блок попытки идентифицирует блок кода, для которого активированы конкретные исключения. За ним следует один или несколько блоков catch.
-
поймать − Программа перехватывает исключение с помощью обработчика исключений в том месте программы, где вы хотите обработать проблему. Ключевое слово catch указывает на перехват исключения.
-
наконец − Блок finally используется для выполнения заданного набора операторов, независимо от того, выброшено исключение или нет. Например, если вы открываете файл, он должен быть закрыт независимо от того, возникло исключение или нет.
-
бросить − Программа выдает исключение при обнаружении проблемы. Это делается с помощью ключевого слова throw.
Синтаксис
Предполагая, что блок вызывает исключение, метод перехватывает исключение, используя комбинацию ключевых слов try и catch. Блок try/catch размещается вокруг кода, который может генерировать исключение. Код в блоке try/catch называется защищенным кодом, а синтаксис использования try/catch выглядит следующим образом —
try { // statements causing exception } catch( ExceptionName e1 ) { // error handling code } catch( ExceptionName e2 ) { // error handling code } catch( ExceptionName eN ) { // error handling code } finally { // statements to be executed }
Вы можете перечислить несколько операторов catch, чтобы перехватывать различные типы исключений, если ваш блок try вызывает более одного исключения в разных ситуациях.
Классы исключений в C#
Исключения C# представлены классами. Классы исключений в C# в основном прямо или косвенно являются производными от класса System.Exception. учебный класс. Некоторыми классами исключений, производными от класса System.Exception, являются System.ApplicationException. и System.SystemException классы.
Исключение System.ApplicationException class поддерживает исключения, генерируемые прикладными программами. Следовательно, исключения, определенные программистами, должны быть производными от этого класса.
System.SystemException class является базовым классом для всех предопределенных системных исключений.
В следующей таблице представлены некоторые из предопределенных классов исключений, производных от класса System.SystemException —
Серийный номер | Класс исключения и описание |
---|---|
1 | <тд>|
2 | <тд>|
3 | <тд>|
4 | <тд>|
5 | <тд>|
6 | <тд>|
7 | <тд>|
8 | <тд>
Обработка исключений
C# предоставляет структурированное решение для обработки исключений в виде блоков try и catch. С помощью этих блоков основные операторы программы отделяются от операторов обработки ошибок.
Эти блоки обработки ошибок реализуются с помощью функции try. , поймать и наконец ключевые слова. Ниже приведен пример создания исключения при выполнении условия деления на ноль —
Живая демонстрацияusing System; namespace ErrorHandlingApplication { class DivNumbers { int result; DivNumbers() { result = 0; } public void division(int num1, int num2) { try { result = num1 / num2; } catch (DivideByZeroException e) { Console.WriteLine("Exception caught: {0}", e); } finally { Console.WriteLine("Result: {0}", result); } } static void Main(string[] args) { DivNumbers d = new DivNumbers(); d.division(25, 0); Console.ReadKey(); } } }
Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —
Exception caught: System.DivideByZeroException: Attempted to divide by zero. at ... Result: 0
Создание пользовательских исключений
Вы также можете определить свое собственное исключение. Определяемые пользователем классы исключений являются производными от класса Exception. учебный класс. Следующий пример демонстрирует это —
Живая демонстрацияusing System; namespace UserDefinedException { class TestTemperature { static void Main(string[] args) { Temperature temp = new Temperature(); try { temp.showTemp(); } catch(TempIsZeroException e) { Console.WriteLine("TempIsZeroException: {0}", e.Message); } Console.ReadKey(); } } } public class TempIsZeroException: Exception { public TempIsZeroException(string message): base(message) { } } public class Temperature { int temperature = 0; public void showTemp() { if(temperature == 0) { throw (new TempIsZeroException("Zero Temperature found")); } else { Console.WriteLine("Temperature: {0}", temperature); } } }
Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —
TempIsZeroException: Zero Temperature found
Бросание предметов
Вы можете создать объект, если он прямо или косвенно является производным от System.Exception. учебный класс. Вы можете использовать оператор throw в блоке catch, чтобы выбросить текущий объект как -
Catch(Exception e) { ... Throw e }
Язык C
- С# с использованием
- C Обработка файлов
- Обработка исключений Python с использованием оператора try, exclude и finally
- Обработка исключений Java
- Обработка исключений C++:пример Try, Catch, Throw
- Обработка исключений Python:попробовать, поймать, наконец и поднять [Пример]
- Обработка сигналов С++
- Java 9 — модульная система
- ПЛК против РСУ
- Модульная система обработки поддонов обеспечивает гибкость производства