首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误和异常之间的区别是什么?

错误和异常之间的区别是什么?
EN

Stack Overflow用户
提问于 2011-04-28 12:24:27
回答 4查看 297K关注 0票数 180

可能重复:

Differences betweeen Exception and Error

如何区分Java中的错误和异常?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-28 12:40:48

An Error“表示合理的应用程序不应该尝试捕获的严重问题。”

An Exception“表示合理的应用程序可能希望捕获的条件。”

Error以及RuntimeException &它们的子类都是unchecked异常。所有其他异常类都是checked异常。

检查的异常通常是程序可以恢复的异常&以编程方式恢复这类异常可能是一个好主意。示例包括FileNotFoundExceptionParseException等。程序员应该通过使用try-catch块检查这些异常,或者将其抛回调用者

另一方面,我们有未检查的异常。如果一切正常,这些异常可能不会发生,但它们确实会发生。示例包括ArrayIndexOutOfBoundExceptionClassCastException等。许多应用程序会对RuntimeExceptions及其子类使用try-catchthrows子句,但从语言的角度来看,这并不是必需的。一定要注意,从RuntimeException恢复通常是可能的,但是设计类/异常的人认为最终程序员没有必要检查这样的异常。

错误也是未检查的异常&程序员不需要对这些异常做任何事情。事实上,使用try-catch子句处理错误并不是一个好主意。大多数情况下,从错误中恢复是不可能的&应该允许程序终止。示例包括OutOfMemoryErrorStackOverflowError等。

请注意,虽然错误是未检查的异常,但我们不应该尝试处理它们,但在代码中处理RuntimeExceptions(也是未检查的异常)是可以的。检查的异常应该由代码处理。

票数 265
EN

Stack Overflow用户

发布于 2011-04-28 12:41:15

ErrorException都扩展了Throwable,但在致命的情况下,Error主要是由JVM抛出的,应用程序无法从该错误中恢复。例如OutOfMemoryError

尽管即使是应用程序也可以引发Error,但这不是一个好的做法,相反,应用程序应该使用检查异常来处理可恢复的条件,并使用运行时异常来处理编程错误。

票数 22
EN

Stack Overflow用户

发布于 2011-04-28 12:27:12

错误是大多数时候你不能处理的东西。

Exception的目的是给你一个机会去做一些事情。例如尝试其他操作或写入日志。

代码语言:javascript
复制
try{
  //connect to database 1
}
catch(DatabaseConnctionException err){
  //connect to database 2
  //write the err to log
}
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5813614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档