运行时异常:
RuntimeException类及其子类都被称为运行时异常,它是java编译器事先不可预知的异常,是UncheckedException,不需要处理(try捕获 or throws声明抛出)。
这种异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现RuntimeException异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过,这种异常可以通过改进代码实现来避免。
常见的RuntimeException有:NullPointerException、ClassCastException、ArithmeticException、IndexOutOfBoundsException、UnsupportedOperationException等
受检查异常:
除了RuntimeException类及其子类外,其他的Exception类及其子类都属于受检查异常,这种异常的特点是要么用try...catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。
检查时异常(CheckedException)是jvm判断可能出现的异常,就是说编译器帮你检查出来了可能出现的异常,此时你程序未执行,但是有可能抛出这个异常,所以提醒你必须要处理(try捕获 or throws声明抛出)。
常见的受检查异常有:IOException、SQLException等
方法中不try掉throw语句的前提下:
1、在方法内throw抛出RuntimeException或其子类异常时,方法可以不声明throws
2、在方法内throw抛出受检查异常时,方法必须声明throws
例:
public void testRuntimeExceptionThrow(String str){
if(str == null){
throw new NullPointerException("str为空");
}
}
public void testCheckedExceptionThrow(String filePath) throws IOException {
if(filePath == null){
throw new IOException("filePath为空");
}
}
对异常的处理:
对于运行时异常,最好不要用try...catch来捕获处理,而是在程序开发调试阶段,尽量去避免这种异常。一旦发现该异常,正确的做法就会改进程序设计的代码和实现方式,修改程序中的错误,从而避免这种异常。
对于受检查异常,老老实实去按照异常处理的方法去处理: 要么用try...catch捕获并解决,要么用throws声明抛出!
异常转型:
异常转型就是捕获到异常后,将异常以新的类型的异常再抛出,这样做一般为了异常的信息更直观!比如:
//SysRunException为自定义异常,继承于RuntimeException
public void test() {
try{
...
}catch(IOException e){
...
throw new SysRunException(msg);//msg为更直观的信息
}finally{
...
}
}
finally语句块会在方法执行return之前执行.
finally语句唯一不被执行的情况是方法执行了System.exit()方法。System.exit()的作用是终止当前正在运行的 Java虚拟机。
finally语句块中不能通过给变量赋新值来改变return的返回值,也建议不要在finally块中使用return语句,没有意义还容易导致错误。
throw语句后不允许有紧跟其他语句,因为这些没有机会执行。
如果一个方法调用了另外一个声明抛出异常的方法,那么这个方法要么处理异常,要么声明抛出。
throw和throws关键字的区别:
throw用来抛出一个异常,在方法体内。语法格式为:throw 异常对象。
throws用来声明方法可能会抛出什么异常,在方法名后,语法格式为:throws 异常类型1,异常类型2...异常类型n。
参考:
http://lavasoft.blog.51cto.com/62575/18920
分享到:
相关推荐
Java 异常详解 Java 异常是指在程序运行中出现的违背指定正常流向的事件。异常可以分为两大类:-checked 异常和 unchecked 异常。Checked 异常必须在编译时捕捉并处理,而 unchecked 异常可以在编译时忽略,但是在...
java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理
高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架
Java 异常处理论文:JAVA 异常处理的分析与研究 Java 异常处理是 Java 语言的一大特色,该文在介绍 Java 语言的异常处理技术的基础上,提出了异常处理的设计原则,从而为 Java 的程序设计实现提供技术上的借鉴。 ...
java异常练习题,北大青鸟学士后课后练习,主要是异常处理的小测验
java异常处理的习题,撒个的是的风格成本凡人歌是东方按时到岗
Java异常
Java异常学习资料,Java异常学习资料,Java异常学习资料
本资源主要描述java异常的知识,里面内容丰富,是java初学者的学习手册,java异常机制小结。
java异常的终极总结 包括非常全面的异常总结 你值得下载!
C++ Java异常处理比较
java 异常处理 代码实例java 异常处理 代码实例
有效处理JAVA异常三原则有效处理JAVA异常三原则有效处理JAVA异常三原则
超全的java异常体系结构以及异常的处理方案,Throwable->Exception-> RuntimeException
java学习之Java异常.ppt
java高端技术课程--Java异常处理详解java高端技术课程--Java异常处理详解java高端技术课程--Java异常处理详解java高端技术课程--Java异常处理详解
本表格集中了所有的java异常 并清晰的加以描述
Java异常详解_动力节点Java学院整理,动力节点口口相传的Java黄埔军校
个人关于java异常处理的思维导图总结。0积分下载。如果认为有帮助,请关注点赞,日后还有更多免费资源。敬请关注。
摘要使用Java异常的人很多,但能合理使用的却不多,Java异常处理设计是一个冷门的话题,但好的异常设计会让程序有质的变化,所以本文从各个方面分析便总结了,在J