A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chen_x 中级黑马   /  2014-3-6 20:18  /  851 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 chen_x 于 2014-3-7 19:14 编辑

异常可以用try catch块处理,可以在函数声明上用throws抛出,那哪些异常应该用catch块处理,哪些用throws抛出会好一点?有没有具体一点的例子说明一下~~~

3 个回复

倒序浏览
只要是Exception的子类但又不是RuntimeException的子类的异常必须处理或抛出。throws只是声明异常,把异常交由虚拟机进行处理,如果虚拟机处理不了就中断程序。try...catch是用户自己处理。毕老师说过在实际开发中异常都应该进行进行try..catch,因为这样才可以更直观的的发现问题,并处理、
回复 使用道具 举报
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, 。
回复 使用道具 举报
能处理尽量处理,不能处理就throws,但是终归是要处理的,除非抛给JVM
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马