Изменения

Перейти к: навигация, поиск

Обработка ошибок и исключения

5 байт убрано, 00:40, 2 марта 2019
Классификация исключений
==Классификация исключений==
Класс Java <code>Throwable</code> описывает все, что может быть брошено как исключение. Наследеники <code>Throwable</code> - <code>EcxeptionException</code> и <code>Error</code> - основные типы исключений. Также <code>RuntimeException</code>, унаследованный от <code>Exception</code>, является существенным классом.
[[Файл:Exceptions.png|400px|thumb|right|Иерархия стандартных исключений]]
===Проверяемые исключения===
<font color=navy>'''public void'''</font> rethrowException(String exceptionName) <font color=navy>'''throws'''</font> Exception {
<font color=navy>'''try'''</font> {
<font color=navy>'''if'''</font> (<font color=green>"First"</font>.equals(exceptionName)) {
<font color=navy>'''throw new'''</font> FirstException();
} <font color=navy>'''else'''</font> {
В примере <code>try</code>-блок может бросить либо <code>FirstException</code>, либо <code>SecondException</code>. В версиях до Java SE 7 невозможно указать эти исключения в декларации метода, потому что <code>catch</code>-блок перебрасывает исключение <code>ex</code>, тип которого - <code>Exception</code>.
В Java SE 7 вы можете указать, что метод <code>rethrowException</code> бросает только <code>FirstException</code> и <code>SecondException</code>. Компилятор определит, что исключение <code>Exception ex</code> могло возникнуть только в <code>try</code>-блоке, в котором может быть брошено <code>FirstException</code> или <code>SecondException</code>. Даже если тип параметра <code>catch</code> - <code>Exception</code>, компилятор определит , что это экземпляр либо <code>FirstException</code>, либо <code>SecondException</code>:
<font color=navy>'''public void'''</font> rethrowException(String exceptionName) <font color=navy>'''throws'''</font> FirstException, SecondException {
<font color=navy>'''try'''</font> {
<font color=gray>// ...</font>
} <font color=navy>'''catch'''</font> (Exception e) {
<font color=navy>'''throw'''</font> e;
}
<tt><font color=navy>'''public void'''</font></tt> f(<tt>Object</tt> a) {
<tt><font color=navy>'''if'''</font></tt> (a == <tt><font color=navy>'''null'''</font></tt>) {
<tt><font color=navy>'''throw new'''</font> NullPointerExceptionIllegalArgumentException</tt>(<font color=green>"a must not be null"</font>);
}
}
Анонимный участник

Навигация