Проверяемые исключения расширяют класс Throwable напрямую, но не расширяют RuntimeException или Error. Непроверяемые исключения расширяют класс RuntimeException, который сам расширяет Throwable.
Основное отличие в том, когда они проверяются:
throwsПроверяемые исключения:
IOExceptionSQLExceptionFileNotFoundExceptionНепроверяемые исключения:
NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundsExceptionС проверяемыми исключениями ты обязан обрабатывать их явно:
try {
// код, который выбрасывает IOException
} catch (IOException e) {
// обработка исключения
}
С непроверяемыми исключениями обработка необязательна, хотя всё равно рекомендуется для надёжного кода. Как правило, они указывают на ошибки в логике программы, которые нужно исправлять, а не перехватывать, тогда как проверяемые исключения представляют восстанавливаемые ситуации, которые вызывающий код должен предусматривать.
Проверяемые исключения должны наследоваться от Exception, но не от RuntimeException, в то время как непроверяемые исключения наследуются от RuntimeException.
Новый — ещё не проверен сообществом
Вы