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


Исключение Java представляет собой объект, который описывает исключительную (то есть, ошибочную) ситуацию, возникающую в части программного кода. Когда такая исключительная ситуация возникает, создается объект, представляющий исключение, который возбуждается в методе, вызвавшем ошибку. Этот метод может либо обработать исключение самостоятельно, либо пропустить его. В обоих случаях, в некоторой точке исключение перехватывается и обрабатывается. Исключения могут генерироваться системой времени выполнения Java, либо они могут быть сгенерированы вручную вашим кодом. Исключения, которые возбуждает Java, имеют отношение к фундаментальным ошибкам, которые нарушают правила языка Java либо ограничения системы выполнения Java. Вручную сгенерированные исключения обычно применяются для того, чтобы сообщить о некоторых ошибочных ситуациях тому, кто вызвал данный метод.

Обработка исключений Java управляется пятью ключевыми словами: try, catch, throw, throws и finally. Если кратко, они работают следующим образом. Операторы программы, которые вы хотите отслеживать на предмет исключений, помещаются в блок try. Если исключение возникает в блоке try, оно возбуждается. Ваш код может перехватить исключение (используя catch) и обработать его некоторым осмысленным способом. Сгенерированные системой исключения автоматически возбуждаются системой времени выполнения Java. Чтобы вручную возбудить исключение, используется ключевое слово throw. Любое исключение, которое возбуждается внутри метода, должно быть специфицировано в его интерфейсе ключевым словом throws. Любой код, который в обязательном порядке должен быть выполнен после завершения блока try, помещается в блок finally. Ниже показана общая форма блока обработки исключений.

try {
// блок кода, в котором отслеживаются ошибки
}
catch (Тип_исключения_1 exOb) {
// обработчик исключений типа ExceptionTypel
}
catch (Тип_исключения_2 exOb) {
// обработчик исключений типа ExceptionType2
}
// ...
finally {
// блок кода, который должен быть выполнен после завершения блока try
}

Здесь Тип_исключения — тип исключения, которое возникает. Остаток настоящей главы посвящен описанию применения этой программной структуры.