检查异常和未检查异常

声明:文章为转载内容,且在原文章基础上做了一些整理,原文链接见文章底部
测试代码
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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值