Java语言基础:异常机制

本文详细介绍了Java中的异常处理机制,包括如何抛出异常、捕获异常及进行清理操作,同时探讨了异常处理中的限制条件。

1.  抛出异常

  • 通过throw new ThrowableClass语法可以抛出一个异常,其中ThrowableClass是一个从Throwable继承的类,或者是Throwable类本身,先看下面的

 

  • 上面的代码会导致编译错误,对于有抛出异常的方法,编译器强制要求:要么在方法上声明要抛出的异常(称为异常说明),要么在方法中用try块捕获这个异常。

 

异常说明可以是方法抛出的异常类本身,也可以是异常类的基类,比如throws后面可以是throwable。

  • 上面说到对于有抛出异常的方法,必须带有方法声明,这并不准确,当抛出的异常类是RuntimeException或其继承类时,不需要异常说明:

 

  • 一个方法即使内部没有抛出异常,也仍然可以带有异常说明:

 

  • 一个方法若带有异常说明,则调用它的其他方法也要带有异常说明,或者要捕获可能抛出的异常:

 

  • 可以基于Exception现实自己的异常类:

 

2.  捕获异常和结束清理

  • 用try{}块包围住可能引发异常的代码,后面紧跟着异常处理器(即catch(...){}块);catch块可以有多个,()中声明要捕获的异常类。当try块抛出一个异常时,执行代码将跳到catch块去,并从第一个catch块开始匹配,直到找到符合的catch块。请看下面的代码说明:

 

  • 在异常处理器后面加上finally子句,无论异常是否发生,finally子句一定会被调用到,finally子句常被用于清理垃圾回收之外的资源,比如打开的文件,网络链接等:

 

3.  异常的限制:对于继承类,它如果所覆盖的方法有异常说明,则所列出的异常类,必须是基类该方法所列出的异常类的子集,先看一个例子:

 

再看一下例子:

 

构造器是一个例外,继承类可以声明更多的异常类,但必须加上基类所声明的异常类:

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值