2010-12-16 69 views

回答

10

“效率”在这里不应该是一个问题。

当您遇到代码无法处理的情况(您希望调用者执行某些操作)时,会引发异常。当你可以做些什么的时候(如果你的调用者也应该做些什么的话,你可能仍然想重新抛出它或另一个异常),你会发现一个异常。

当您决定是否检查错误条件以避免后续异常或仅调用一些代码并在之后处理异常时,效率可能会很有用。这里的经验法则是,例外应该只发生在例外的情况下,因为它们会产生相当多的运行时间开销(当它们实际被抛出时,纯粹的catch块没有成本)。

+0

是否真的有没有成本,有一个catch块?我认为在设置和拆除额外的面向异常的框架时,即使没有抛出异常,也会有开销(尽管可能与您的实际代码相比很小)。 – 2010-12-16 04:50:14

+0

谢谢蒂洛。 – Mudassir 2010-12-16 05:45:55

4

这是一个高度争议的话题,很多人都有强烈的意见。一些有用的链接

http://www.ibm.com/developerworks/java/library/j-jtp05254.html

http://onjava.com/pub/a/onjava/2003/11/19/exceptions.html

最喜欢春天的流行的框架相信只有处理异常的理念,如果你可以做一些关于他们,因此,他们投入更多的运行时异常。这是有道理的,因为抛出和捕获检查异常是添加不必要的代码。

还有一个问题。在应用程序中的某个时刻,尤其是接近UI界面层(例如Web应用程序的servlet),您需要确保正确处理各种异常并捕获它们。否则,用户会看到500错误,这绝对不是一个理想的体验。在某个时候,您想让用户了解哪里出了问题。如果它的运行时异常,可能更好的说,未知的错误,记录它并发送邮件给系统管理员跟踪。

所以是的,只处理您期望的异常,并且可以在整个应用程序中以建设性的方式进行处理。但是,当您接近应用程序的用户界面层时,请对此规则进行例外。