因为error和Exception是可抛出类的子类,所以我们可以抛出任何Error、runtime ex和其他ex。我们也可以捕获这些类型中的任何一种。
为什么我们通常只捕获检查过的异常?
有没有人能给我提供很好的例子链接?
发布于 2010-04-09 09:13:45
检查异常的全部意义在于您需要捕获它。这是一种在正常程序执行中可能出现的错误类型(例如I/O错误),应用程序应该能够很好地处理它。
相反,未检查的异常是那些在程序的正常运行期间不应该发生的异常(它们以某种方式违反了规则),因此您不会尝试处理它,因为您可能没有太多可以做的事情。
发布于 2010-04-09 09:13:16
我认为你的假设是永远不会处理未检查的异常是错误的。当然,您永远不应该处理NullPointerException
、IndexOutOfBoundsException
等,因为它们指示编程中的逻辑错误,因此捕获它们实际上隐藏了程序中存在错误的事实。然而,一些API具有根植于RuntimeException
的异常层次结构,如果是这样的话,您可能最终会捕获应用程序中大量异常的地狱;实际上,我以前开发了一个图形用户界面应用程序,其中需要处理从RuntimeException
继承的大量不同的异常,而这个API恰好比Java语言中抛出检查异常的任何API使用得更多,所以在这种情况下实际上是相反的。
也就是说,如果确实有什么事情需要处理,那么按照惯例,这些都会变成受控异常(继承自Exception
而不是RuntimeException
)。此外,编译器会强制您处理这样的异常或将其声明为抛出(这就是“检查异常”的意思)。因此,约定和要求的组合可能就是为什么您要处理更多已检查的异常而不是未检查的异常的原因(因为按照约定,紧急的异常已经变成了已检查的异常,或者您忽略了重要的未检查的异常,因为您不需要处理它们)。
发布于 2010-04-09 09:14:18
为什么我们通常只捕获检查过的异常?
因为与未检查的异常(RuntimeException
、Error
及其子类)不同,您需要捕获它们。相反,使用未检查异常的意义在于您不需要捕获它们,而常见的场景它让应用程序(通常是框架、容器或JVM)“上方”的一块软件来处理它们。在某些情况下,您可能需要或决定自己处理一个,并显式地捕获它。但这是一种例外情况。
有没有人能给我提供很好的例子异常链接?
也许是关于Exceptions的Java教程。
https://stackoverflow.com/questions/2604482
复制相似问题