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