Java异常处理
2015-07-30 22:59
585 查看
1. 异常分类
Java中所有的异常类都派生于Throwable类,Throwable类有子类Error和Exception类。其中Error表示Java运行时系统的内部错误,Exception表示程序运行异常。Exception的子类又分为两大类:RuntimeException类和其他异常类,RuntimeException表示程序的逻辑错误,如:NullPointerException;其他异常表示外部异常条件引起的错误,如:IOException。
Java将异常分为已检查异常和未检查异常,未检查异常包括Error和RuntimeException,已检查异常包括其他Exception。未检查异常表示该种错误要么无法由程序员控制(Error),要么程序员完全应该避免(RuntimeException)。而已检查异常表示由外部条件引发的错误,Java的异常处理机制主要是为了处理已检查异常。
2. 覆盖与异常
子类想要覆盖父类中的一个方法,如果父类中该方法没有抛出异常,则子类中的新方法也不能抛出异常;如果父类中该方法抛出异常,则子类中可以不抛出异常,若抛出异常,则要求子类中方法抛出的异常范围不超过父类中方法抛出的异常。
3.finally子句
finally子句表示不管try块中是否发生异常,都会执行finally块中的代码。finally通常用来释放程序中需要手动释放的资源,如:关闭文件,关闭数据库连接等。例:
需要注意的是,上面的例子中,里面的try语句只有finally子句,实际上这是合法并且推荐的方式,表示该try语句的目的就是为了释放资源,并且,很多情况下,finally子句中的代码有可能会抛出异常。
假设try语句中包含return语句,而finally子句中也包含return语句,则finally中的return语句会覆盖try语句中的返回值。
参考资料 《Java核心技术》
Java中所有的异常类都派生于Throwable类,Throwable类有子类Error和Exception类。其中Error表示Java运行时系统的内部错误,Exception表示程序运行异常。Exception的子类又分为两大类:RuntimeException类和其他异常类,RuntimeException表示程序的逻辑错误,如:NullPointerException;其他异常表示外部异常条件引起的错误,如:IOException。
Java将异常分为已检查异常和未检查异常,未检查异常包括Error和RuntimeException,已检查异常包括其他Exception。未检查异常表示该种错误要么无法由程序员控制(Error),要么程序员完全应该避免(RuntimeException)。而已检查异常表示由外部条件引发的错误,Java的异常处理机制主要是为了处理已检查异常。
2. 覆盖与异常
子类想要覆盖父类中的一个方法,如果父类中该方法没有抛出异常,则子类中的新方法也不能抛出异常;如果父类中该方法抛出异常,则子类中可以不抛出异常,若抛出异常,则要求子类中方法抛出的异常范围不超过父类中方法抛出的异常。
3.finally子句
finally子句表示不管try块中是否发生异常,都会执行finally块中的代码。finally通常用来释放程序中需要手动释放的资源,如:关闭文件,关闭数据库连接等。例:
try { try { input.read(.....); return 1; } finally { input.close(); return 2; } } catch(IOException e) { e.printStackTrace(); }
需要注意的是,上面的例子中,里面的try语句只有finally子句,实际上这是合法并且推荐的方式,表示该try语句的目的就是为了释放资源,并且,很多情况下,finally子句中的代码有可能会抛出异常。
假设try语句中包含return语句,而finally子句中也包含return语句,则finally中的return语句会覆盖try语句中的返回值。
参考资料 《Java核心技术》
相关文章推荐
- springmvc中解决406问题
- Spring_00600_IOC_annotation_Components
- Web工程依赖java工程不编译
- JAVA Arrays.binarySearch
- [leetcode-66]plus one(java)
- 《写给大忙人看的java SE8》笔记 -- 2. Stream
- Spring JDBCTemplate Query步骤查询
- Spring multipart file上传
- myeclipse快捷键使用
- MyEclipse8.6注册机,仅供于个人学习使用
- java多线程之synchronized
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- spring 手工实现AOP编程
- hibernate与spring整合所遇到的问题
- 最流行的Java应用服务器排行
- JAVA NIO的理解
- Java中的static静态代码块
- spring mvc +jdbctemplate 返回多表查询List<Bean>
- eclipse启动时jdk环境变量的问题及解决办法
- [转]java框架spring中的opensessioninview有什么作用