Проверенное исключение против исключения времени выполнения
Исключения - это особые типы событий, которые могут нарушить нормальный ход выполнения программы. Исключение имени происходит от «исключительное событие». Вызов исключения - это процесс создания объекта исключения и его передачи системе времени выполнения. Когда исполняющая система получает объект исключения, она пытается найти кого-нибудь, чтобы обработать его в стеке вызовов, обходя его в обратном порядке (в котором были вызваны методы). Система времени выполнения считается успешной, если она находит метод с обработчиком исключений. Обработчик исключений - это блок кода, который может официально обрабатывать указанное исключение. Если исполняющая система находит подходящий обработчик, она передает объект исключения обработчику. Это называется перехватом исключения. Однако, если исключение не может быть обработано, программа завершится. В Javaисключения наследуются от класса Throwable. Проверенные исключения - это исключения, обработка которых осуществляется компилятором. Исключения времени выполнения - это тип исключений, которые не проверяются компилятором.
Что такое проверенное исключение?
Проверенные исключения - это либо объекты класса java.lang.exception, либо его подклассы (кроме java.lang. RuntimeException и его подклассов). Проверенные исключения «проверяются» во время компиляции. Это означает, что программист должен либо перехватить, либо выдать эти исключения, иначе компилятор будет жаловаться (вызывая ошибку компилятора). По этой причине многие проверенные исключения хорошо известны программистам. Например, IOException и его подклассы являются проверяемыми исключениями, и всякий раз, когда программист имеет дело с доступом или изменением файла, компилятор проверяет, чтобы программист позаботился обо всех возможных IOExceptions.
Что такое исключение времени выполнения?
Исключения времени выполнения состоят из java.lang. RuntimeException и всех его подклассов. Теоретически они служат той же цели, что и проверенные исключения, и могут быть выброшены или обработаны как проверенные исключения, но их обработка не выполняется компилятором. Следовательно, исключения среды выполнения относятся к семейству непроверенных исключений. NullPointerException, NumberFormatEception, ClassCastException и ArrayIndexOutOfBoundsException - распространенные исключения времени выполнения в Java.
В чем разница между проверенным исключением и исключением времени выполнения?
Хотя как проверенные исключения, так и исключения времени выполнения являются нежелательным явлением во время выполнения программы, они имеют свои различия. Обработка проверенных исключений обеспечивается компилятором, а исключения времени выполнения - нет. Следовательно, для компиляции кода необходимо генерировать или обрабатывать проверенные исключения, но такого требования в отношении исключений времени выполнения нет. Следовательно, исключения времени выполнения относятся к категории непроверенных исключений вместе с ошибками.
Недостатком отмеченных исключений является то, что программисту приходится справляться с этим, даже если он не знает, как это сделать. Таким образом, если программист просто генерирует новое исключение, не упаковывая исходное, трассировка стека, принадлежащая исходному исключению, будет потеряна. Вот здесь и пригодятся исключения времени выполнения. Поскольку все исключения времени выполнения могут обрабатываться в одном месте, программисты могут писать меньше кода. С другой стороны, поскольку проверяемые исключения необходимо перехватывать, для программиста нет ничего удивительного. Она всегда будет знать, какое проверенное исключение может быть вызвано определенным методом. В отличие от этого, различные исключения времени выполнения могут возникать без ведома программиста.