Изменения

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

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

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

Навигация