快速业务通道

Java中的异常 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

Java中的异常

时间:2011-04-23 博客园 逖靖寒

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很多人 都有讨论,并没有一个统一的结论。不过绝大多数的观点是:混合使用。

Java中的异常(2)

时间:2011-04-23 博客园 逖靖寒

使用Exception的常见错误

我们看看下面这段代码:

1: 2: // from http://gpcuster.cnblogs.com 3: InputStream input = null; 4: 5: try{ 6: 7:  input = new FileInputStream("myFile.txt"); 8: 9:  //do something with the stream 10: 11: } catch(IOException e){ 12:  throw new WrapperException(e); 13: } finally { 14:  try{ 15:  input.close(); 16:  } catch(IOException e){ 17:   throw new WrapperException(e); 18:  } 19: }

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

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

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

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

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

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

更好地使用异常

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

1 对catch住的异常进行包装和扩展。

2 使用自定义的异常处理接口。

3 在catch异常的最上层记录异常日志。

4 使用异常处理模板。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号