浅谈异常

本文介绍了Java异常处理,包括异常的继承结构,Error和Exception的区别,以及RuntimeException和CheckedException的使用。详细阐述了try-catch-finally语句块的工作流程,并讨论了如何自定义异常类。在异常处理中,finally块确保了资源的释放,但其return语句可能会影响原有逻辑的返回值。
摘要由CSDN通过智能技术生成

异常继承图在这里插入图片描述

可以看出,所有的异常都继承自Throwable,Throwable的两个子类分为Error和Exception.
Error:就是错误,无法捕捉,是程序无法处理的,如OutOfMemoryError.
Exception:

  • RuntimeException:运行时异常,发生在运行期,可以使用try catch来处理,如果不捕获,JVM会自动处理.比如:ClassCastException(类型转换异常),ArithmeticException(算术异常),IlleegalArgumentException(不合法参数异常),IndexOutOfBoudsException(数组越界异常),NullPointerException(空指针异常)等等
  • CheckedException:编译时异常,必须使用throws语句(或try catch)在方法上或者是构造函数上声明.例如:IOException等.

Error类或者RuntimeException类的所有异常称为非受查异常,所有其他的异常称为受查异常.

捕获异常:

try{
   
    有可能出现异常的语句
}{
    catch(异常类型 异常对象){
   
    ....
}
finally{
   
异常的出口
}
}
  • try代码块中放的是可能出现异常的代码.
  • catch代码块中放的是出现异常后的处理措施
  • finally代码块中用于处理善后工作,会在最后执行(并且如果有finally那么一定会执行)
  • 其中catch和finally都可以根据实际情况选择加或者不加.
异常处理流程:
  • 程序先执行try中的代码
  • 如果try中的代码出现异常,就会结束try中的代码,看和catch中的异常类型是否匹配
  • 如果找到匹配的异常类型,就会执行catch中的代码
  • 如果没有找到匹配的异常类型,就会将异常向上传递给上层调用者
  • 无论是否找到匹配的异常类型,finally中的代码都会被执行
  • 如果上层调用者也处理不了异常,那么就继续向上传递
  • 一直到main方法也没找到合适的代码处理异常,就会交给JVM进行处理,此时程序会异常终止

当然,有时候我们需要根据实际情况来抛出需要的异常,这时我们可以使用throws关键字手动抛出一个异常:

public class MyException {
   
    public static void 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值