自定义exception
2015-11-18 19:25
190 查看
转自:http://blog.csdn.net/jasph77/article/details/2223272
本文讨论有关异常设计的问题,关注何时和怎么更好的使用异常类,设计符合自己系统的自己定义异常类。这里假设读者已经对java已经一定的了解,知道什么是java的异常,及其工作原理。读者想了解java 和 java异常相关知识,请拜读《Thinking in java 3rd 》(真实一本好书^_^)
异常设计原则:
异常表示没有遵守契约。如果一个事件表示了“异常条件”或者“没有遵守契约”,那么,Java程序所要做的就是抛出异常。
异常的类型:
检查型异常checked和非检查型异常non-checked(运行时异常,RuntimeException和它的子类)。
一般而言,表示类的误用的异常应该是非检查型异常。String类的chartAt()方法抛出的StringIndexOutOfBoundsException就是一个非检查型异常。SUN公司并不打算强制客户程序员每次调用charAt(int index)时都检查index参数的合法性。
另一方面,java.io.FileInputStream类的read()方法抛出的是IOException,这是一个检查异常。这个异常表明尝试读取文件时出错了。这并不意味着客户程序员错误地使用了FileInputStream类,而是说这个方法无法履行它地职责,即从文件中读出下一个字节。FileInputStream类地设计者认为这个意外情况很普遍,也很重要,因而强制客户程序员处理之。
意外情况是方法无法履行职责,而且很普遍的或者很重要的,调用者必须采取措那抛出检查型异常,反之,抛出非检查型异常。
自定义异常类
为了很好的定位java程序的错误,加强系统的健壮性,避免NullPointerException错误的出现几率,需要建立一套完善的Java自定义Exception错误体系。
自定错误命名规范:AH+错误类型+Exception。例:
检查型异常checked
<%
ConnectionManager smgr = new ConnectionManager();
String sql = "select MMSId from a_shipinfoais";
%>
非检查型异常non-checked:
本文讨论有关异常设计的问题,关注何时和怎么更好的使用异常类,设计符合自己系统的自己定义异常类。这里假设读者已经对java已经一定的了解,知道什么是java的异常,及其工作原理。读者想了解java 和 java异常相关知识,请拜读《Thinking in java 3rd 》(真实一本好书^_^)
异常设计原则:
异常表示没有遵守契约。如果一个事件表示了“异常条件”或者“没有遵守契约”,那么,Java程序所要做的就是抛出异常。
异常的类型:
检查型异常checked和非检查型异常non-checked(运行时异常,RuntimeException和它的子类)。
一般而言,表示类的误用的异常应该是非检查型异常。String类的chartAt()方法抛出的StringIndexOutOfBoundsException就是一个非检查型异常。SUN公司并不打算强制客户程序员每次调用charAt(int index)时都检查index参数的合法性。
另一方面,java.io.FileInputStream类的read()方法抛出的是IOException,这是一个检查异常。这个异常表明尝试读取文件时出错了。这并不意味着客户程序员错误地使用了FileInputStream类,而是说这个方法无法履行它地职责,即从文件中读出下一个字节。FileInputStream类地设计者认为这个意外情况很普遍,也很重要,因而强制客户程序员处理之。
意外情况是方法无法履行职责,而且很普遍的或者很重要的,调用者必须采取措那抛出检查型异常,反之,抛出非检查型异常。
自定义异常类
为了很好的定位java程序的错误,加强系统的健壮性,避免NullPointerException错误的出现几率,需要建立一套完善的Java自定义Exception错误体系。
自定错误命名规范:AH+错误类型+Exception。例:
检查型异常checked
<%
ConnectionManager smgr = new ConnectionManager();
String sql = "select MMSId from a_shipinfoais";
%>
非检查型异常non-checked:
相关文章推荐
- 九项重要的职业规划提示(转自W3School )
- mysql中 的 ENGINE = innodb; 是什么意思?
- nyoj--747--蚂蚁的难题(三)(dp背包)
- 安装cmake 出现胡问题
- oracle数据库的问题和大数据的前景问题
- 转义字符的应用
- 引用 google-play-services.jar
- 堆和栈的区别(转过无数次的文章)
- RelativeLayout 知识点
- nginx 502
- 字符串反转
- 谈一谈:抽象工厂+反射+配置文件 实现数据访问程序
- 初来大学
- 命令行执行Qt程序
- web入门第三天
- iOS中几种数据持久化方案
- 命令行执行Qt程序
- Sprint 1 Review & Daily Scrum - 11/18
- 第11周项目2-用二叉树求解代数表达式
- Android_Fragment