回答
一个错误“表示严重问题 合理的应用程序应该 不要试图赶上。”
而
了异常 “表示条件 合理的应用程序可能 想赶上。”
Error随RuntimeException
&其子类unchecked
例外。所有其他异常类别都是checked
例外。
检查例外通常是程序可以从中恢复的那些&以编程方式从这些例外中恢复可能是一个好主意。例子包括FileNotFoundException
,ParseException
等程序员,预计通过使用try-catch块来检查这些异常或扔回去给调用者
在另一方面,我们有选中例外。这些都是那些如果一切顺利都不会发生的例外,但它们确实发生了。示例包括ArrayIndexOutOfBoundException
,ClassCastException
等。许多应用程序将使用try-catch
或throws
子句为RuntimeExceptions
&其子类,但从语言角度来看,它不需要这样做。请注意,从RuntimeException
恢复通常是可能的,但设计类/异常的人认为最终程序员没有必要检查这些异常。
错误也未经检查异常&程序员不需要对这些做任何事情。实际上,对于错误使用try-catch
子句是一个坏主意。大多数情况下,从错误中恢复是不可能的。&程序应该被允许终止。例子包括OutOfMemoryError
,StackOverflowError
等
请注意,虽然错误是未经检查的异常,我们不应该试图对付他们,但它是确定以应对代码RuntimeExceptions
(也unchecked异常)。检查的异常应该由代码处理。
一般而言,错误是指任何人都无法控制或猜测它何时发生.Exception可以被猜测并且可以被处理。 Java中的异常和错误是Throwable的子类,它是基于程序控制进行区分的。例如OutOfMemory Error等错误,程序员无法猜测并且可以处理它。它依赖于基于结构,操作系统和服务器配置的动态.Where因为Exception程序员可以处理它,并且可以避免应用程序的错误行为。例如,如果您的代码正在查找不可用的文件,则抛出IOException。此类实例程序员可以猜测并处理它。
错误是大多数情况下你无法处理的东西。
例外是为了给你一个机会去做一些事情。就像尝试别的东西或写入日志。
try{
//connect to database 1
}
catch(DatabaseConnctionException err){
//connect to database 2
//write the err to log
}
Error
和Exception
都扩展Throwable
,但大多Error
由JVM中的场景是致命的,是没有办法的应用程序,以从错误中恢复抛出。例如OutOfMemoryError
。
虽然即使应用程序也可以引发Error
,但它不是一个好习惯,相反,应用程序应该使用检查的异常来处理可恢复的条件,并使用运行时异常来处理编程错误。
我可能有一个例子,你可能想尝试从'Error'(例如'OutOfMemoryError')恢复。假设你有一个移动应用程序,并且你想放置一张背景图片。在某些旧的或较低的内存设备上,这可能是不可能的(应用程序本身没有留下内存)。所以有两个选项你会检查它是否可能每次你想显示这样的图片,或者你只是试图显示它,如果它会失败,你赶上'OutOfMemoryError'并继续没有它。 – 2015-12-11 07:08:42
- 1. Javascript中的错误和异常有什么区别
- 2. web.xml错误500和struts全局异常有什么区别?
- 3. 异常和错误之间的区别
- 4. 异常和错误之间的区别?
- 5. 本机php异常和该文本返回的错误有什么区别?
- 6. 语法错误和语义错误与逻辑错误有什么区别?
- 7. 继承与类别有什么区别
- 8. 运行时错误和编译器错误有什么区别?
- 9. 返回代码错误和错误有什么区别
- 10. C#中的Specific和Exception异常有什么区别?
- 11. 陷印和处理异常有什么区别?
- 12. 投掷和投掷之间有什么区别异常
- 13. 中断和异常上下文有什么区别?
- 14. 抛出和抛出arg捕获异常有什么区别?
- 15. TouchEvent常量有什么区别?
- 16. 有什么区别
- 17. 有什么区别
- 18. 有什么区别?
- 19. 有什么区别?
- 20. 有什么区别?
- 21. 有什么区别
- 22. ....有什么区别?
- 23. 有什么区别?
- 24. 有什么区别
- 25. 有什么区别
- 26. 有什么区别
- 27. 有什么区别?
- 28. 集成测试与rspec的正常测试有什么区别?
- 29. 有什么区别`和$(Bash中有什么区别?
- 30. 与%i和%li有什么区别?
'RuntimeException'S通常是由不良编程引起的。 – wulfgarpro 2012-09-09 08:46:47
恰恰相反,wulfgar,我的经验告诉我,RuntimeException是用户输入无效的结果。 – corsiKa 2015-04-19 04:45:35
@corsiKa无效的用户输入应该由程序员检查。 – mochomecha 2016-05-25 08:19:37