Книга: C# для профессионалов. Том II
Исключения
Исключения
Исключения используются в C# таким же образом, как и в C++, кроме двух следующих различий:
? C# определяет блок finally
, который содержит код, всегда выполняющийся в конце блока try
независимо от того, порождалось ли какое-либо исключение. Отсутствие этого свойства C++ явилось причиной недовольства среди разработчиков C++. Блок finally
выполняется, как только управление покидает блок catch
или try
, и содержит обычно код очистки выделенных в блоке try
ресурсов.
? В C++ класс, порожденный в исключении, может быть любым классом. C#, однако, требует, чтобы исключение было классом, производным от System.Exception
.
Правила выполнения программы в блоках try
и catch
идентичны в C++ и C#. Используемый синтаксис также одинаков, за исключением одного различия: в C# блок catch, который не определяет переменную для получения объекта исключения, обозначается самой инструкцией catch
. Синтаксис C++:
catch (...) {
Синтаксис C#.
catch {
В C# этот вид инструкции catch
может быть полезен для перехвата исключений, которые порождаются кодом, написанным на других языках (и которые поэтому могут не быть производными от System.Exception
, компилятор C# отметит ошибку, если попробовать определить такой объект-исключение, но это не имеет значения для других языков программирования).
Полный синтаксис для try…catch…finally
в C# выглядит следующим образом:
try {
// обычный код
} catch (MyException e) { // MyException выводится из System.Exception
// код обработки ошибки
}
// необязательные дополнительные блоки catch
finally {
// код очистки
}
Отметим, что блок finally
является необязательным. Также допустимо не иметь блоков catch
, в этом случае конструкция try…finally
служит просто способом обеспечения, чтобы код в блоке finally
всегда выполнялся, когда происходит выход из блока try
. Это может быть полезно, например, если блок try
содержит несколько инструкций return
и требуется выполнить очистку ресурсов, прежде чем метод реально возвратит управление.
- 1.2.7. Исключения
- Исключения и обработчики исключений
- Рассмотрите возможность исключения необязательной информации перед отправкой данных на устройство
- Ода ошибкам и исключениям
- Исключения, возникающие при выполнении операций над числами с плавающей точкой
- Ошибки и исключения
- Исключения, генерируемые приложением
- ГЛАВА 7 Взаимные исключения и условные переменные
- 10. Лекция: Операторы и структура кода. Исключения
- Исключения из правил оптимизации
- Восстановление при исключениях, сгенерированных операционной системой
- Исключения разработчика