234
правки
Изменения
→Типы исключений
#Stack unwinding (раскрутка стека) в поисках нужного обработчика.
==Типы Классификация исключений==Класс Java Throwable описывает все, что может быть брошено как исключение.
===Проверяемые исключения===
Сущность механизма проверяемых исключений состоит в добавлении следующих правил и ограничений:
*В описании метода в явном виде перечисляются все типы исключений, которые он может сгенерировать.
*Метод, вызывающий метод с объявленными исключениями, для каждого из этих исключений обязан либо содержать обработчик, либо, в свою очередь, указывать этот тип как генерируемый им в своём описании.
Все исключения, кроме классов Error и RuntimeException и их наследников, являются проверяемыми.
===Непроверяемые исключения=======error=Error===
Класс Error и его подклассы предназначены для системных ошибок. Свои собственные классы-наследники для Error писать (за очень редкими исключениями) не нужно. Как правило это действительно фатальные ошибки, пытаться обработать которые довольно бессмысленно.
В некоторых случаях ситуация не столь критична. Например, нехватка памяти, вызывающая java.lang.OutOfMemoryError. Если эта ошибка произошла в момент выделения большого объема памяти – например, при создании массива, – ее можно перехватить и попытаться выделить память в меньших объемах, изменив каким-то образом алгоритм, который будет эту память использовать.
====runtime exception=RuntimeException===
Эти исключения обычно возникают в результате ошибок программирования, например, ошибки разработчика или неверное использование интерфейса приложения. Например, в случае выхода за границы массива метод бросит ''OutOfBoundsException''. Теоретически приложение может поймать это исключение, но разумнее исправить ошибку.