Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
}
} catch(IOExceptмon es) {
... обработка исключения ... } finally {
fis.flushO;
fis.closeO;
}
Если в данном примере поместить операторы очистки буфера и закрытия файла сразу после окончания обработки данных, то при возникновении ошибки ввода/вывода корректного закрытия файла не произойдет. Еще раз отметим, что блок finally будет выполнен в любом случае, вне зависимости от того, произошла обработка исключения или нет, возникло это исключение или нет.
В конструкции try-catch-finally обязательным является использование одной из частей оператора catch или finally. То есть конструкция
try {
} finally { }
является вполне допустимой. В этом случае блок finally при возникновении исключительной ситуации должен быть выполнен, хотя сама исключительная ситуация обработана не будет и будет передана для обработки на более высокий уровень иерархии.
Если обработка исключительной ситуации в коде не предусмотрена, то при ее возникновении выполнение метода будет прекращено и исключительная ситуация будет передана для обработки коду более высокого уровня. Таким образом, если исключительная ситуация произойдет в вызываемом методе, то управление будет передано вызывающему методу и обработку исключительной ситуации должен произвести он. Если исключительная ситуация возникла в коде самого высокого уроп~ ня (например, методе main()), то управление будет передано исполняюцдей системе Java и выполнение программы будет прекращено (более цочно — будет остановлен поток исполнения, в котором произошла та-^ая ошибка).
Использование оператора throw
Помимо того, что предопределенная исключительная ситуация может быть возбуждена исполняющей системой Java, программист сам может дано породить ошибку. Делается это с помощью оператора throw.
Например:
public int calculate(int theValue) { if( theValue < 0) {
throw new Ехсерпоп("Параметр для вычисления не должен быть отрицательным");
}
В данном случае предполагается, что в качестве параметра методу может быть передано только положительное значение; если это условие не выполнено, то с помощью оператора throw порождается исключительная ситуация. (Для успешной компиляции также требуется в заголовке метода указать throws Exception — это выражение рассматривается ниже.)
Метод должен делегировать обработку исключительной ситуации вызвавшему его коду