Я знаю разницу между Ошибка ошибки во время выполнения [] и Исключение. {Говоря со ссылкой на JAVA}. Но являются фатальной ошибкой и исключением то же самое или они разные. Или нет никакой концепции фатальной ошибки в java? Я искал google, но это было довольно запутанно.неустранимая ошибка В.С. Исключение
ответ
Прочитано Java tutorial on Exceptions.
Для краткого объяснения вы можете использовать этот небольшой путеводитель. См. Диаграмму классов с иерархией исключений Java (красный) и несколькими примерами (синий) в каждой категории.
Throwable
: общий предок всего, что может быть брошен (и пойманы), используя механизм исключений Java.
Error
: вы можете думать о Error
с, как о том, что вы называете «неустранимое исключение». Обычно не имеет смысла даже пытаться восстановить приложение. OutOfMemoryError
или StackOverflowError
являются такими фатальными ошибками, что вы вряд ли можете что-либо сделать в пределах приложения.
Не поймайте Error
s, пусть программа выйдет из строя и решит проблему на улице.
RuntimeException
: следует использовать для главным образом ошибок программиста (см следующий пример), например, не-отрегулированный нулевой указатель де-ссылки, не выполняет метод контрактов и т.д.
Хотя методы, где все исключения завернуты в RuntimeException
s и обрабатываются за пределами бизнес-кода (как правило, с помощью АОП), обычно появление RuntimeException
означает, что вы должны позволить программе сбой и исправить исходный код.
/**
* Does something with s.
* @param s The input string
*/
public void badlyDesignedMethod(String s) {
// Here the programmer omitted to check s against null
int i = s.length();
...
}
/**
* Does something with s.
* @param s The input string; must not be null
*/
public void betterDesignedMethod(String s) {
if (s == null) {
throw new IllegalArgumentException("The parameter s must not be null!);
}
int i = s.length();
...
}
public void caller() {
badlyDesignedMethod(null); // will throw NullPointerException
// It is the fault of the programmer of badlyDesignedMethod()
// as they have not specified that the parameter must not be null.
betterDesignedMethod(null); // will throw IllegalArgumentException
// Now it is the fault of the programmer of caller()
// as they violated the contract of betterDesignedMethod()
// which DOES tell them that the parameter must not be null
}
Оба Error
s и RuntimeException
s являются бесконтрольно, что означает, что метод не должен объявить, что он бросает их и абоненты не должны поймать их, т.е. объемного звучания не вызов с try-catch
блок.
Другие исключения (унаследованных от Exception
и не от RuntimeException
): исключения, которые должны быть объявленные (throws...
) и пойманных (try-catch
), которые в основном предназначены проведение полезной информации от метода к его вызывающий: база данных недоступна, файл не открывается и т. д.
Это исключение, которое должно обрабатываться вашим кодом. Они являются «ожидаемыми исключениями» по сравнению с исключениями времени выполнения, которые являются «неожиданными исключениями».
public void doSomethingWithFile(String fileName) throws IOException {
if (/* file is not accessible */) {
throw new IOException("File " + fileName + " is not accessible!");
}
...
}
public void caller() {
try {
doSomethingWithFile("/home/honza/file.txt");
}
catch (IOException e) {
// handle the fact that the file is not accessible
return;
}
...
}
Слово FATAL обычно используется в контексте структуры регистратора, e.г. log4j, SLF4J, logback и многие другие. Теперь на поиск в файле журнала можно найти сообщения, как
2015-09-28 15:21:48,222 Thread-4 FATAL Unable to register shutdown hook because JVM is shutting down. java.lang.IllegalStateException: Cannot add new shutdown hook as this is not started. Current state: STOPPED
at org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.addShutdownCallback(DefaultShutdownCallbackRegistry.java:113)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.addShutdownCallback(Log4jContextFactory.java:271)
at org.apache.logging.log4j.core.LoggerContext.setUpShutdownHook(LoggerContext.java:240)
Это указует операция вызвала ошибку или исключение произойдет, и это, ошибка или исключение, было зарегистрирована разработчиком с использованием структуры регистратора на СМЕРТЕЛЬНОМ уровне , Сообщение могло быть зарегистрировано на любом уровне.
Log4J, например, предлагает много уровней журнала: OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ВСЕ
http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Level.html
Просто, чтобы вызвать больше путаницы, там уровень журнала называется ERROR.
В заключение, исключение FATAL Vs FATAL error: FATAL - это уровень журнала, на котором был зарегистрирован объект исключения или ошибки, и не имеет отношения к возникновению исключения или ошибки, но когда разработчик регистрируется на уровне FATAL это ловить глаз и вызывать реакцию.
Согласно документу Log4J о том, когда регистрироваться на уровне FATAL «Суровая ошибка, которая предотвратит продолжение приложения».
- 1. PHP Неустранимая ошибка: исключение «исключение»
- 2. Неустранимая ошибка и исключение
- 3. Неустранимая ошибка: исключение исключения ReflectionException
- 4. Неустранимая ошибка: исключение «Zend_Gdata_App_HttpException» с
- 5. Неустранимая ошибка: исключение исключение «Исключение» с сообщением «1064»
- 6. Неустранимая ошибка: исключение исключение «Исключение» с сообщением «id not included»
- 7. Неустранимая ошибка: исключение для неактивных PAYPAL
- 8. Неустранимая ошибка: исключить исключение «com_exception» в Aspose
- 9. Неустранимая ошибка: Исключить исключение SoapFault: [WSDL]
- 10. Неустранимая ошибка: исключение SoapFault: [HTTP] Неверный запрос
- 11. Неустранимая ошибка: исключение «Zend \ Stdlib \ Exception \ BadMethodCallException
- 12. PHP Неустранимая ошибка: исключение uncaught «PHPExcel_Calculation_Exception»
- 13. PHP: Неустранимая ошибка: исключение «ActiveRecord \ RecordNotFound»
- 14. Неустранимая ошибка: исключение «mysqli_sql_exception» с сообщением
- 15. Marshal.AllocHGlobal В.С. Marshal.AllocCoTaskMem, Marshal.SizeOf В.С. SizeOf()
- 16. Неустранимая ошибка: исключить исключение «Исключение» с сообщением «DateTimeZone ::?
- 17. Неустранимая ошибка: исключить исключение «Исключение»; требует расширения CURL PHP Google_Client.php
- 18. Неустранимая ошибка: исключение «Zend_Config_Exception» с сообщением «Синтаксическая ошибка, неожиданно» = '
- 19. Неустранимая ошибка: исключение SoapFault: [env: Client] Внутренняя ошибка
- 20. Ошибка SQL: «Неустранимая ошибка»
- 21. Неустранимая исключение в основной теме
- 22. Неустранимая исключение: основной Android Eclipse
- 23. Конструктор В.С. setter Methods
- 24. IPostbackEventHandler В.С. IPostBackDataHandler
- 25. PathDelim В.С. DirectorySeparatorChar
- 26. Кодирование польского Огонек В.С.
- 27. PHPExcel Неустранимая ошибка: исключить исключение «Исключение» с сообщением «Формула Ошибка: Неожиданно»,
- 28. Неустранимая ошибка: исключение исключение «Google_Auth_Exception» с сообщением «Ошибка получения маркера доступа OAuth2, сообщение:« invalid_client »
- 29. CakePHP Ошибка Spark_plug: Неустранимая ошибка: исключить исключение «Исключение» с сообщением «Пользователь :: authsomeLogin() не реализовано!»
- 30. Неустранимая ошибка: исключить исключение «ImagickException» с сообщением «NoDecodeDelegateForThisImageFormat
Вы точно знаете разницу между 'Error' и' Exception'? Поскольку существует «RuntimeException», поэтому, если вы считаете, что «Ошибка» как-то специфична для времени выполнения, вы ошибаетесь. – Kayaman
Я реферировал это-> Оба класса java.lang.Error и java.lang.Exception являются подклассами класса java.lang.Throwable, но между ними существуют существенные различия. Класс java.lang.Error представляет ошибки, вызванные главным образом средой, в которой работает приложение. Например, OutOfMemoryError возникает, когда у JVM заканчивается память или StackOverflowError возникает, когда переполнение стека. –
Нет такой вещи, как «фатальная» ошибка, в отличие от «нефатальной» ошибки; Кроме того, исключения могут быть фатальными. Это зависит только от того, как они обрабатываются (или нет) в отношении того, вызывает ли эта ошибка/исключение прекращение JVM. Обратите внимание, что ошибки обычно не должны быть пойманы; некоторые исключения должны быть. –