Java中的异常

Java异常是我们编程中时时刻刻都要使用的特性,但是我们却很少去关注它细节的一些信息。

Exception架构

所有的异常都是派生至Throwable,最主要的2个继承类是Exception和Error。

我们常说的异常都是指Exception,Exception分为Check Exception和Unchecked Exception。

JDK文档中对Error中解释是:用于指示合理的应用程序不应该试图捕获的严重问题,大多数这样的错误都是异常条件。其中一个比较特殊的就是ThreadDeath,我们不应该去捕获这个异常,熟悉多线程编程的朋友一定会清楚其中的原因。

Check Exception和Unchecked Exception
之前在学习C++和C#的时候,所有的异常处理都属于Unchecked Exception,后来学习Java发现,Java语言对于某些异常强制要求声明methods会抛出什么异常,并且在需要强制捕获某些异常,这种异常就属于Check Exception。

关于什么时候应该使用Check Exception,什么时候应该使用Unchecked Exception很多人都有讨论,并没有一个统一的结论。不过绝大多数的观点是:混合使用。

使用Exception的常见错误
我们看看下面这段代码:

如果不存在myFile.txt文件的话,这段代码最终将会如果执行?

如果仔细考虑这个问题会非常有意思:

首先,在执行input = new FileInputStream(“myFile.txt”)的时候,抛出FileNotFindException。

然后,进入到catch段,将来抛出WrapperException,但还没有抛出这个异常。

最后,进入final段,这个时候,input是null的,所以将会抛出NullPointException。

通过这个剪短的分析,我们可以看出,最终的执行结果是抛出NullPointException。

更好地使用异常
如何更加高效地使用异常是一个大家关注的问题,这里主要有4点建议提供大家参考:

1 对catch住的异常进行包装和扩展。
2 使用自定义的异常处理接口。
3 在catch异常的最上层记录异常日志。
4 使用异常处理模板。

本文来自:http://blog.csdn.net/gpcuster/archive/2010/02/02/5285978.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值