java异常

运行时异常可以不捕获,即使一段代码不可能抛出这个RuntimeException,你也可以在任何时候任何地点抛出这个RuntimeException,因此我建议RuntimeException不抛也不捕获,统一交给处理程序最后处理(调用者一般不会知道一个方法会抛出哪些RuntimeException的,因此由程序统一处理)


重写方法时,不能声明抛出和父类方法异常不兼容的异常。如父类抛出一个IOException,这时子类方法可以抛出IOException或Exception(不然里氏替换原则不满足),也可以不声明抛出异常。


编译期异常要显式捕获或往上抛(方法里要显式声明抛转这个异常)。

代码里尽量不捕获异常,但要声明抛出异常。捕获异常的工作尽量交给调用者来处理。

try catch finally 不要在finally中return, finally一般做些释放资源的事情。
如果方法在try 或 catch中返回值的话,即使这个值在finally中做了更改,这个更改值无效(但是在eclipse debug中能看到值变了,但方法返回的结果却是try(catch)中的值,除非你在finally中直接return,但是不建议这么做。因此finally中最好不要有return(eclipse这时会提示警告!)

java思想4edition中提到:吞没异常的两种可能,1: finally中也抛出了异常,这样try中抛出的异常就会被吞没;2:finally中有return语句。
第一种情况,如在finally中关闭网络连接,释放文件资源等,这时的异常一定要自己捕获,不能再往外抛了,否则try中的异常就会被吞了。

java中部分Error是可以捕获的,如StackOverflowError, 而且捕获后vm可以继续工作,StackOverflowError也可象Exception一样一级一级往上抛。但是有的Error不会被捕获,如OutOfMemeoryError, 此时vm也会终止。more debate see http://stackoverflow.com/questions/352780/when-to-catch-java-lang-error
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值