Исключения Java делятся на две категории: проверенное исключение и исключение времени выполнения. Проверенные исключения являются исключениями, которые могут быть обработаны на стадии компиляции.
Разница и соединение между исключительным исключением и исключением выполнения
Общие классы исключений
Перечислите несколько общих исключений во время выполнения:
Перечислите несколько исключений без перерыва (проверенные исключения):
Ошибка
Ошибка обычно относится к проблемам, связанным с виртуальными машинами, такими как сбои системы, ошибки виртуальных машин, динамические сбои ссылок и т. Д. Эта ошибка не может быть восстановлена или не может быть захвачена, что приведет к прерыванию приложения. Обычно приложения не могут обрабатывать эти ошибки, поэтому программа не должна пытаться использовать Catch, чтобы поймать объект ошибки. Нет необходимости бросить объект ошибки при определении метода.
Использование проверенных исключений
Как упоминалось ранее, проверяется четко обрабатываться явно, в противном случае будет сообщена ошибка компиляции, например, объявление потока ввода файла:
FileInputStream fis = new FileInputStream ("test.md");Этот код будет составлен с ошибкой
Неупостол тип исключения FileNotFoundException
Следовательно, это должно быть обработано явно, и, как правило, есть два способа обработки проверенных исключений:
Если вы знаете, как справиться с этим, лучше всего использовать попробуйте ... поймать ... Заблокировать обработку:
// Проверено исключение должно быть обработано явно try {fileInputStream fis = new FileInputStream ("test.md");} catch (filenotfoundexception e) {e.printstacktrace (); System.out.println («Файл не существует!»);}Если вы не знаете, как с этим справиться, то бросьте его в метод и обрабатывайте его предыдущим вызывающим абонентом:
Public Static Void Main (String [] args) бросает filenotFoundException {// Проверенное исключение должно быть обработано явно // Исключение подбрасывается в основном методе и передается JVM для обработки. Метод обработки исключений JVM состоит в том, чтобы распечатать информацию об стеке трассировки и завершить программу для запуска FileInputStream fis = new FileInputStream ("test.md");} Используйте бросок, чтобы бросить исключения самостоятельно
Иногда, согласно потребностям бизнеса, мы сами выкладываем исключения в программу. Например, если содержимое файла чтения пустое, мы думаем, что это исключение. В настоящее время мы можем использовать бросок, чтобы активно бросить исключение и поймать его:
// Использование броска, чтобы активно бросить исключение, try {fileInputStream fis = new FileInputStream ("test.md"); if (fis.read () == 0) {бросить новое ioexception ("empty file"); }} catch (ioException e) {e.printstacktrace ();}Если Throw Books исключение выполнения, программа может быть поймана с попыткой ... поймать ... или игнорировать его.
Обработка цепочки исключений
В реальных приложениях на уровне предприятия мы часто не раскрываем основные исключения из приложений высшего уровня, такие как не выявлять исключения SQL из пользовательского интерфейса. Во -первых, для пользователей видение исключений SQL не полезно для них, и, во -вторых, для вредоносных пользователей небезопасно разоблачить основные исключения.
Так как же заблокировать основное исключение? Обычная практика: программа сначала выявляет первоначальное исключение, а затем бросает новое бизнес -исключение. Новое бизнес -исключение содержит бывшую информацию для пользователя. Этот способ обработки становится переводом исключения. Следующее показывает, как программа, которая создает пользователь, блокирует основное исключение:
// Продемонстрировать цепочку исключений и создать пользователь Public void CreateSubsCriber (int subiD) Throws BusinessException {try {// Создать логику пользователя ...} Catch (Exception e) {// Обработка и сохранение исходного исключения ... // Верх от нового бизнес -исключения Thress New BusinessException ("Creation User Fail"); }}Вы можете видеть, что программа скрывает исходное исключение и предоставляет только необходимую информацию о приглашении на исключение вверх, что может гарантировать, что основное исключение не будет расширено на уровень презентации, который полностью соответствует принципу инкапсуляции объекта.
Этот вид улавливания одного исключения, бросание другого исключения и сохранение исходной информации об исключении является типичной цепной обработкой, которая называется шаблоном цепочки ответственности в шаблоне проектирования.
Несколько предложений по использованию исключений
Мы используем исключения для достижения нескольких целей:
Чтобы решить эти цели, мы должны:
1. Не используйте и не полагайтесь на это: исключения очень удобны, но не используйте обработку исключений для обычной логики, например, как
// исходный код if (filestize> 100) {sysotem.out.println («Файл слишком большой, пожалуйста, загрузите снова»); Продолжить;} // Изменить, чтобы использовать исключение, если (FileSize> 100) {бросить новое исключение («Файл слишком большой, пожалуйста, загрузите снова»);} // Делать это, очевидно, безответственно.