Исключения - объекты класса Exception или его потомков, в которых передается информация об ошибках.
Для обработки исключительных ситуаций используется конструкция try/catсh, имеющая следующий синтаксис:
try {
программный код, при выполнении которого возможны ошибки
}
catch(тип переменная) {
программный код для обработки ошибки указанного типа
}
Можно перехватывать не одно, а несколько типов исключений, если использовать несколько блоков catch. В этом случае более специфичные исключения должны предшествовать более общим исключениям, поскольку среда выполнения просматривает обработчики исключений по порядку. Перехватив исключение, можно получить более детальную информацию об ошибке. Свойство Message содержит краткое описание ошибки; свойство TargetSite представляет объект, в котором возникла ошибка (используя этот объект, можно получить имя метода, имя класса и имя сборки, в которой возникла ошибка); свойство InnerException возвращает следующий объект в цепочке исключений.
В том случае, когда в программном коде обработки ошибки нет необходимости в получении детальной информации о произошедшей ошибке, применяется упрощенная конструкция try/catсh:
try {
программный код, при выполнении которого возможны ошибки
}
catch {
программный код для обработки ошибки указанного типа
}
Также можно использовать конструкцию try/catсh/finally, имеющую следующий синтаксис:
try {
программный код, при выполнении которого возможны ошибки
}
catch(тип переменная) {
программный код для обработки ошибки указанного типа
}
finally {
программный код, выполняемый вне зависимости от ошибки
}
В качестве типа перехватываемого исключения необходимо использовать класс Exception или его потомков. Для выбрасывания (возбуждения) исключения используется оператор throw, имеющий следующий синтаксис:
throw исключение;
В простейшем случае для выбрасывания общего исключения используется следующий синтаксис:
throw new Exception("сообщение об ошибке");
Если необходимо повторно возбудить исключение, перехваченное в блоке catch, следует воспользоваться оператором throw без параметров.