В чем разница между ошибками и исключениями? - программирование
Подтвердить что ты не робот

В чем разница между ошибками и исключениями?

Возможный дубликат:
Различия между Исключениями и ошибками

Как я могу различать ошибки и исключения в Java?

4b9b3361

Ответ 1

Ошибка "указывает на серьезные проблемы что разумное применение должно не пытайтесь поймать".

а

Исключение "указывает условия что разумное приложение может хочу поймать".

Ошибка вместе с RuntimeException и их подклассы являются unchecked исключениями. Все остальные классы исключений являются checked исключениями.

Проверенные исключения - это, как правило, те, из которых программа может восстановить, и может быть хорошей идеей оторваться от таких исключений программно. Примеры включают FileNotFoundException, ParseException и т.д. Ожидается, что программист проверяет эти исключения, используя блок try-catch или отбрасывая его обратно вызывающему абоненту

С другой стороны, мы имеем непроверенные исключения. Это те исключения, которые могут не произойти, если все в порядке, но они действительно происходят. Примеры включают ArrayIndexOutOfBoundException, ClassCastException и т.д. Многие приложения будут использовать предложение try-catch или throws для RuntimeExceptions и их подклассы, но с точки зрения языка это не требуется. Обратите внимание, что восстановление из RuntimeException вообще возможно, но ребята, которые разработали класс/исключение, считали ненужным для конечного программиста проверку таких исключений.

Ошибки также являются исключенными, и программисту не требуется ничего с ними делать. На самом деле это плохая идея использовать предложение try-catch для ошибок. Чаще всего восстановление из ошибки невозможно, и программе должно быть разрешено завершить работу. Примеры включают OutOfMemoryError, StackOverflowError и т.д.

Обратите внимание, что хотя ошибки являются неконтролируемыми исключениями, мы не должны пытаться с ними справиться, но нормально работать с RuntimeExceptions (также непроверенными исключениями) в коде. Проверенные исключения должны обрабатываться кодом.

Ответ 2

Error и Exception расширяются Throwable, но в основном Error генерируется JVM в сценарии, который является фатальным, и нет возможности для прикладной программы восстановить эту ошибку. Например OutOfMemoryError.

Хотя даже приложение может поднять Error, но это просто не очень хорошая практика, вместо этого приложения должны использовать проверенные исключения для восстанавливаемых условий и исключений во время выполнения для ошибок программирования.

Ответ 3

Ошибка - это то, что большую часть времени вы не можете обработать.

Исключение было предназначено, чтобы дать вам возможность что-то с этим сделать. например, попробовать что-то еще или записать в журнал.

try{
  //connect to database 1
}
catch(DatabaseConnctionException err){
  //connect to database 2
  //write the err to log
}

Ответ 4

В общей ошибке, которую никто не может контролировать или угадывать, когда это происходит. Исключение можно догадаться и обрабатывать. В Java Exception и Error есть подкласс класса Throwable.It дифференцируется на основе управления программой .Error, такой как ошибка OutOfMemory, которую ни один программист не может угадать и не может ее обработать. Это зависит от динамического использования архитектуры, конфигурации ОС и сервера. Программист исключений может справиться с этим и может избежать неправильного поведения приложения. Например, если ваш код ищет файл, который недоступен, тогда генерируется IOException. Такие программисты могут угадывать и обрабатывать его.