Exception - исключительная ситуация возникла в ходе работы приложения, но не по причине фатального сбоя в среде выполнения (не найден файл или класс, отсутствует соединение, объект не поддерживает клонирование). Такие исключения необходимо отлавливать и обрабатывать (checked), чтобы приложение могло корректно продолжить свою работу.
Error - исключительная ситуация возникла в самой Java-машине (переполнение памяти в куче или стековой памяти, внутренние ошибки) и не связана с корректностью работы приложения. Эти ошибки невозможно предвидеть/обработать, поэтому они не должны отлавливаться (unchecked). При регулярном возникновении фатальных ошибок имеет смысл пересмотреть архитектуру приложения, произвести рефакторинг.
Исключительные ситуации - любое отклонение от нормального выполнения алгоритма. Все классы исключений в Java являются прямыми или непрямыми наследниками класса Throwable.
Если ссылка была проинициализирована как null, то любые попытки обратиться по ней к каким-то полям или методам, выбрасывается исключение java.lang.NullPointerException.
... Читать дальше »
Из блока catch в finally переменные передаются по значению. Поэтому, если в блоке finally производятся какие-то модификации переменной примитивного типа, вызывающий метод получит то значение переменной, она имела в блоке catch.
... Читать дальше »
Блок try-catch допускает только такой порядок: try-catch-finally. Нельзя ставить finally перед catch. Но блок catch может не присутствовать. try-finally является корректной конструкцией.
... Читать дальше »