При возникновении исключительного события создается объект некоторого класса, который содержит информацию о событии.
Это объект передается обработчику исключения или обрабатывается системой, исполняющей программу.
Все классы, порождающие объекты исключений имеют общего предка, класс Throwable.
try {
// код, который потенциально может выбрасывать
// одно или больше исключений
} catch (SomeException e1) {
// код, который должен выполняться, если
// будет выброшено исключение SomeException
} catch (Exception e2) {
// код выполняющийся, если будет выброшено
// исключение, являющееся объектом типа Exception
// или любым, не обработанным выше его потомком
} finally {
// код, который должен выполняться в любом случае
}
Если вы можете написать код, который может снять причину исключения так, чтобы программа могла дальше работать, пишите его в соответствующем блоке catch.
В некоторых случаях, перехватив одно исключение, можно в блоке catch выбросить другое примерно следующим образом.
Если вы не желаете обрабатывать проверяемое исключение в данном методе, а желаете переложить ответственность обработки на вызывающий метод, опишите выбрасывание данного исключения в клаузе throws данного метода:
void trouble() throws IOException, SomeException {
...
}
Примечание: Если в клаузе throws вы предусмотрели выбрасывание исключения IOException, нет смысла в ней описывать каких-либо его потомков, например FileNotFoundException, поскольку их выбрасывание обусловлено описанием предка.
Игнорировать исключения совсем может понадобиться разве что при неаккуратно написанном коде. Если возникла необходимость проигнорировать исключения – правильным будет ограничить список игнорируемых исключений только минимально достаточными и выполнить журналирование, используя метод Throwable.printStackTrace.
Переопределенный метода НЕ может:
Выбрасывать дополнительные исключения по отношению к тем, что выбрасывает переопределяемый метод.
Выбрасывать суперклассы исключений по отношению к тем, что выбрасывает переопределяемый метод.
int port = 80;
if( ! successful ) {
throw new ServerTimedOutException( "Could not connect", port );
}
try {
// код, который потенциально может выбрасывать исключениe
} catch (SomeException e1) {
e1.printStackTrace();
}
Печать стека вызовов в момент выбрасывания исключения:
assert <булевское_выражение>; Если <булевское_выражение> вырабатывает значение false, выбрасывается исключение AssertionError.
assert <булевское_выражение> :
Выражение во втором аргументе
Пример 2:
void foo() {
for (...; ...: ...) {
. . .
if (...) return;
}
assert false; // Выполнение никогда не должно
// попадать в это место !
}
java -enableassertions AppClass
java -ea AppClass
или
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть