Возможный дубликат:
Различия между Исключениями и ошибками
Как я могу различать ошибки и исключения в Java?
Возможный дубликат:
Различия между Исключениями и ошибками
Как я могу различать ошибки и исключения в Java?
Ошибка "указывает на серьезные проблемы что разумное применение должно не пытайтесь поймать".
а
Исключение "указывает условия что разумное приложение может хочу поймать".
Ошибка вместе с RuntimeException
и их подклассы являются unchecked
исключениями. Все остальные классы исключений являются checked
исключениями.
Проверенные исключения - это, как правило, те, из которых программа может восстановить, и может быть хорошей идеей оторваться от таких исключений программно. Примеры включают FileNotFoundException
, ParseException
и т.д. Ожидается, что программист проверяет эти исключения, используя блок try-catch или отбрасывая его обратно вызывающему абоненту
С другой стороны, мы имеем непроверенные исключения. Это те исключения, которые могут не произойти, если все в порядке, но они действительно происходят. Примеры включают ArrayIndexOutOfBoundException
, ClassCastException
и т.д. Многие приложения будут использовать предложение try-catch
или throws
для RuntimeExceptions
и их подклассы, но с точки зрения языка это не требуется. Обратите внимание, что восстановление из RuntimeException
вообще возможно, но ребята, которые разработали класс/исключение, считали ненужным для конечного программиста проверку таких исключений.
Ошибки также являются исключенными, и программисту не требуется ничего с ними делать. На самом деле это плохая идея использовать предложение try-catch
для ошибок. Чаще всего восстановление из ошибки невозможно, и программе должно быть разрешено завершить работу. Примеры включают OutOfMemoryError
, StackOverflowError
и т.д.
Обратите внимание, что хотя ошибки являются неконтролируемыми исключениями, мы не должны пытаться с ними справиться, но нормально работать с RuntimeExceptions
(также непроверенными исключениями) в коде. Проверенные исключения должны обрабатываться кодом.
Error
и Exception
расширяются Throwable
, но в основном Error
генерируется JVM в сценарии, который является фатальным, и нет возможности для прикладной программы восстановить эту ошибку. Например OutOfMemoryError
.
Хотя даже приложение может поднять Error
, но это просто не очень хорошая практика, вместо этого приложения должны использовать проверенные исключения для восстанавливаемых условий и исключений во время выполнения для ошибок программирования.
Ошибка - это то, что большую часть времени вы не можете обработать.
Исключение было предназначено, чтобы дать вам возможность что-то с этим сделать. например, попробовать что-то еще или записать в журнал.
try{
//connect to database 1
}
catch(DatabaseConnctionException err){
//connect to database 2
//write the err to log
}
В общей ошибке, которую никто не может контролировать или угадывать, когда это происходит. Исключение можно догадаться и обрабатывать. В Java Exception и Error есть подкласс класса Throwable.It дифференцируется на основе управления программой .Error, такой как ошибка OutOfMemory, которую ни один программист не может угадать и не может ее обработать. Это зависит от динамического использования архитектуры, конфигурации ОС и сервера. Программист исключений может справиться с этим и может избежать неправильного поведения приложения. Например, если ваш код ищет файл, который недоступен, тогда генерируется IOException. Такие программисты могут угадывать и обрабатывать его.