Изменения
→try-catch-finally
===try-catch-finally===
Код, который может бросить исключения оборачивается в <code>try</code>-блок, после которого идут блоки <code>catch</code> и <code>finally</code>(Последний может быть опущен).
try {
}
Сразу после блока проверки следуют после обработчики исключений, которые объявляются ключевым словом <code>catch</code>.
try {
Код из блока <code>finally</code> выполнится в любом случае: при нормальном выходе из <code>try</code>, после обработки исключения или при выходе по команде <code>return</code>.
'''NB:''' Если JVM выйдет во время выполнения кода из <code>try</code> или <code>catch</code>, то <code>finally</code> -блок может не выполниться. Также, например, если поток выполняющий <code>try</code> или <code>catch</code> код остановлен, то блок <code>finally</code> может не выполниться, даже если приложение продолжает работать.
Блок <code>finally</code> удобен для закрытия файлов и освобождения любых других ресурсов. Код в блоке <code>finally</code> должен быть максимально простым. Если внутри блока <code>finally</code> будет брошено какое-либо исключение или просто встретится оператор <code>return</code>, брошенное в блоке <code>try</code> исключение (если таковое было брошено) будет забыто.
<tt>import</tt> java.io.IOException;
}
После того, как было брошено первое исключение - <code>new Exception("a")</code> - будет выполнен блок <code>finally</code>, в котором будет брошено исключение <code>new IOException("b")</code>, именно оно будет поймано и обработано. Результатом его выполнения будет вывод в консоль <code>b</code>. Исходное исключение теряется.
===Информация об исключениях===