1、如果无法处理某个异常,那就不要捕获它。
2、如果捕获了一个异常,请不要胡乱处理它。
3、尽量在靠近异常被抛出的地方捕获异常。
4、在捕获异常的地方将它记录到日志中,除非打算将它重新抛出。
5、按照您的异常处理必须多精细来构造您的方法。
6、需要用几种类型的异常就用几种,尤其是对于应用程序异常。
java异常可以分成两大类:Exception和RuntimeException(虽然RuntimeException是从Exception继承的)。exception异常代表“无法避免的异常” 如io异常 往往这类异常是由于外部原因造成的,程序本身无法保证他们不发生,所以这类异常必须捕获。如果在函数内部无法处理这个异常必须再次抛出(在函数后面用throws语句),如果什么都不做就出现编译错误。
runtimexception是指“可以避免的异常”,如 null引用异常,这类异常都是由程序内部原因造成的,是可以避免的。对于这类异常可以忽略他们,但一旦发生程序就会异常终止。这类异常对debug非常有帮助,当然,如果需要也可以catch
理论上讲,应该捕捉一切可以预知的异常。当然,如果不是最终的使用者(客户程序员),而是类库提供者,可以throws,因为你可以确知这些异常会最终被处理;否则,一定要谨慎的使用throws,因为可能最终exception不会被正确处理。
的确是有这样的特例的。比如,在jsp里,即使不处理异常也不抛出,因为jsp本身机制,也不会报编译错。这个时候,可能会使这个异常成为类似于RuntimeException的东西,让最终用户看到。这种做法是不负责任的。
RuntimeException只是一个概念,实际上,本来所有的Exception都一样,本质上RuntimeException不会另行处理。所以,是不是throws,还是要根据你的总体设计中bean所处的地位来进行判断。
一句话总结:
除非你想把异常处理的责任交给调用者,一般不用throws, 。
|