概述
声明:文章为转载内容,且在原文章基础上做了一些整理,原文链接见文章底部
测试代码
public class ExceptionTypeTest {
public void doSomething()throws ArithmeticException{
System.out.println();
}
public static void main(){
ExceptionTypeTest ett = new ExceptionTypeTest();
ett.doSomething();
}
}
public class ExceptionTypeTest {
public void doSomething()throws ArithmeticException{
System.out.println();
}
public static void main(){
ExceptionTypeTest ett = new ExceptionTypeTest();
ett.doSomething();
}
}
问题1:上面的程序能否编译通过?并说明理由。
解答:能编译通过。
分析:按照一般常理,定义doSomething方法是定义了ArithmeticException异常,在main方法里 里面调用了该方法。那么应当继续抛出或者捕获一下。但是ArithmeticException异常是继承RuntimeException运行时异常,java编译器不要求你一定要把它捕获或者一定要继续抛出
问题2:上面的程序将ArithmeticException改为IOException能否编译通过?并说明理由。
解答:不能编译通过。
分析:IOException extends Exception 是属于checked exception(检查异常),必须要在方法里面或者捕获或者继续抛出
总结
java里面异常分为两大类:
- checked exception(检查异常)
- unchecked exception(未检查异常),也叫RuntimeException(运行时异常)
对未检查的异常(unchecked exception )的几种处理方式:
1. 捕获
2. 继续抛出
3. 不处理
对检查的异常(checked exception,除了RuntimeException,其他的异常都是checked exception )的几种处理方式:
1. 继续抛出,消极的方法,一直可以抛到java虚拟机来处理
2. 用try…catch捕获
注意:对于检查的异常必须处理,或者必须捕获或者必须抛出
1.异常的分类:
java.lang.Throwable
|– Error错误:JVM内部的严重问题。无法恢复。程序人员不用处理。
|–Exception异常:普通的问题。通过合理的处理,程序还可以回到正常执行流程。要求编程人员要进行处理。
|–RuntimeException:也叫非受检异常(unchecked exception).这类异常是编程人员的逻辑问题,由于程序员的疏忽导致的错误(如数组越界,空指针等)。Java编译器不进行强制要求处理。 也就是说,这类异常再程序中,可以进行处理,也可以不处理。
|–非RuntimeException:也叫受检异常(checked exception).这类异常是由一些外部的偶然因素所引起的。Java编译器强制要求处理。也就是说,程序必须进行对这类异常进行处理。
2.常见异常:
1)非受检的:NullPointerException,ClassCastException,
ArrayIndexsOutOfBoundsException,ArithmeticException(算术异常,除0溢出)
2)受检:Exception,FileNotFoundException,IOException,SQLException.
3.自定义异常:当需要一些跟特定业务相关的异常信息类时。
可以继承继承Exception来定义一个受检异常。也可以继承自RuntimeException或其子类来定义一个非受检异常。
4.异常继承图
本文转载自http://blog.csdn.net/yy_wg/article/details/54729069
最后
以上就是鲤鱼小丸子为你收集整理的检查异常和未检查异常的全部内容,希望文章能够帮你解决检查异常和未检查异常所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复