如何区分 Java 中的错误和异常?
错误“表明合理的应用程序不应试图捕获的严重问题”。
尽管
异常“表示合理的应用程序可能想要捕获的条件”。
错误RuntimeException及其子类是unchecked例外。所有其他异常类都是checked异常。
RuntimeException
unchecked
checked
检查 的异常通常是程序可以从中恢复的异常,以编程方式从此类异常中恢复可能是个好主意。示例包括FileNotFoundException,ParseException等。程序员应使用 try-catch 块检查这些异常或将其返回给调用者
FileNotFoundException
ParseException
另一方面,我们有 未经检查 的异常。如果一切正常,这些例外情况可能不会发生,但确实会发生。示例包括ArrayIndexOutOfBoundException,ClassCastException等。许多应用程序将使用try- catchorthrows子句来表示RuntimeExceptions& 他们的子类,但从语言的角度来看,这不是必需的。请注意,RuntimeException通常可以从 a 中恢复,但设计类/异常的人认为最终程序员没有必要检查此类异常。
ArrayIndexOutOfBoundException
ClassCastException
try- catch
throws
RuntimeExceptions
错误 也是未经检查的异常,程序员不需要对这些做任何事情。事实上,try- catch对错误使用子句是个坏主意。大多数情况下,从错误中恢复是不可能的,应该允许程序终止。示例包括OutOfMemoryError,StackOverflowError等。
OutOfMemoryError
StackOverflowError
请注意,虽然错误是未经检查的异常,但我们不应该尝试处理它们,但可以RuntimeExceptions在代码中处理(也是未经检查的异常)。已检查的异常应由代码处理。