错误和例外有什么区别?

可能重复:
exception与错误的区别

如何区分Java中的错误和exception?

错误“表示合理应用程序不应该试图捕捉的严重问题”。

一个例外“表示一个合理的应用程序可能想要捕捉的条件。

错误以及RuntimeException及其子类是uncheckedexception。 所有其他exception类都是checkedexception。

检查的exception通常是程序可以从中恢复的exception,这可能是以编程方式从这些exception中恢复的好主意。 例子包括FileNotFoundExceptionParseException等。程序员希望通过使用try-catch块来检查这些exception,或者把它返回给调用者

另一方面,我们有未经检查的例外。 这些都是那些如果一切顺利都不会发生的例外,但是确实发生了。 示例包括ArrayIndexOutOfBoundExceptionClassCastException等。许多应用程序将使用try-catchthrows子句来处理RuntimeExceptions及其子类,但从语言的angular度来看,并不需要这样做。 请注意,从RuntimeException中恢复通常是可能的,但devise类/exception的人认为最终程序员不需要检查这种exception。

错误也是未经检查的exception,程序员不需要对这些做任何事情。 实际上,对于错误使用try-catch子句是一个坏主意。 大多数情况下,从错误中恢复是不可能的,程序应该被允许终止。 例子包括OutOfMemoryErrorStackOverflowError

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

ErrorException都扩展Throwable ,但是大部分Error是由JVM在一个致命的情况下引发的,应用程序无法从该错误中恢复。 例如OutOfMemoryError

虽然应用程序可以引发一个Error但它不是一个好的做法,相反,应用程序应该使用检查的exception进行可恢复的条件和运行时exception,以避免编程错误。

错误是大多数情况下你无法处理的。

例外是为了给你一个机会去做一些事情。 像尝试别的东西或写入日志。

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

一般来说,错误是没有人能够控制或者猜测的时候发生的.Exception可以被猜到并且可以被处理。 在Java中,exception和错误是Throwable的子类,它是基于程序控制的差异化的。OutOfMemory Error等错误是程序员无法猜测和处理的。它依赖于基于结构,OS和服务器的dynamicconfiguration。例外程序员可以处理它,并可以避免应用程序的错误行为。例如,如果您的代码正在寻找一个不可用的文件,则抛出IOException。这样的程序员可以猜测和处理它。