异常

百知教育学习-胡鑫喆-异常

  • 异常的父类 : Throwable类,位于java.lang包下

    • Throwable类中提供常用的方法

      • public String getMessage() :返回String类型的异常信息
      • public void printStackTrace() :打印跟踪方法调用栈而获得的详细异常信息
    • 在这里插入图片描述

      • Throwable 异常的父类

        |- Error 错误 严重 不可避免 不可处理

        |- Exception 异常 可以处理

        ​ |- RuntimeException子类 未检查异常 可以避免 可处理可不处理

        ​ |- 非RuntimeException子类 已检查异常 不可避免 必须处理

  • 异常的产生

    • throw 异常对象 抛出一个异常

    • 在这里插入图片描述

      ma调mb,mb调mc,mc抛出异常

    • 在这里插入图片描述

    • 异常的传递

      • 沿着方法调用链,反向传递

      • 在这里插入图片描述

      • 在这里插入图片描述

        在本例中,异常只是一直抛给父类,并没有解决异常

  • 处理异常

    • 1.声明抛出 throws

    • 2.捕获异常 try-catch 多个catch 先catch子类异常,再catch父类异常,否则会报错

      printStackTrace() :打印异常栈追踪信息

      在这里插入图片描述

    在这里插入图片描述


Finally

  • 为了防止出现异常而中断try块里面的代码,导致里面的代码执行不完全

    • 在这里插入图片描述
  • try-catch-finally finally:无论如何都会执行,通常用于释放资源

    • 比如 try{

      ​ 插卡

      ​ 输入密码和金额2000

      ​ 余额-=2000

      ​ 吐钱2000

      ​ }carch(吐钱异常 e){

      ​ 余额+=2000 处理异常

      ​ }finally{

      ​ 退卡

      ​ }

  • finally与return 如果return语句也在finally语句中,那么只会执行finally中的return语句,因为函数只能有一个返回值

    • 在这里插入图片描述
  • finally中有给变量值赋值的情况

    • 如果在执行finally块前出现return语句,会把在值先缓存起来,等执行完finally块后,再返回缓存起来的值。
      • 在这里插入图片描述
    • try和finally中都有return返回值的情况,其实finally中还是给变量重新赋值了
      • 在这里插入图片描述

方法覆盖对抛出异常的要求

  • 子类方法不能抛出一个父类方法没有抛出的异常

    子类方法抛出异常必须是父类方法抛出异常的 同类,子类或不抛

    这是为了保证多态的应用,如果子类抛出父类没有抛出的异常,那么 Super s=new Sub();创建一个父类引用子类对象

    如果出现子类的异常会抛出,没有任何的防范措施。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值