Java异常学习知识点全的很

异常

分类

Error

  • Java虚拟机无法解决的严重问题

    • 没办法编写针对性的代码进行处理

Exception

  • 其他因编程错误或偶然的外在因素导致的一般性问题。

    • 可以针对性的代码进行处理
  • 分类

    • 编译时异常-受检异常

      • IOException
      • ClassNotFoundException
    • 运行时异常-非受检异常

      • NullPointerException
      • ArrayIndexOutofBoundsException
      • ClassCastException
      • NUmberFormatException

处理方式

抓抛模型

    • 程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象

      • 关于异常对象的产生:1、系统自动生成的异常对象 2、手动生成一个异常对象,并抛出(throw)
    • 并将此对象抛出

    • 一旦抛出对象后,其后的代码不再执行。

  • 抓:异常处理方式

    • try-catch-finally

      • 结构
        在这里插入图片描述

        •         结构图
          
        • try-catch-finally是可以嵌套的
      • 说明

        • finally

          • finally是可选的
          • 代码一定会被执行
          • 一般像数据库连接、输入输出流、网络编程等资源,进行资源关闭的代码写在finally中
        • 使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配。

        • 一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理。一旦处理完成,就跳出当前的try-catch结构(在没写finally的情况),继续执行其后的代码

        • catch中的异常类型如果没子父类关系,则谁声明在上,谁声明在下无所谓。
          catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错

      • 异常对象处理的方式

        • getMessage()–返回string
        • printStackTrace()
      • 什么时候写?

        • 对于运行时异常不用异常处理,但针对编译时异常,要进行异常处理。
    • throws+异常处理类型

      • 写在方法的声明处,指明此方法在执行时可能会抛出的异常类型
      • 一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码,就不再执行!

自定义异常类

继承于现有的异常结构:RuntimeException 、Exception

提供全局常量(static final):serialVersionUID

提供重载的构造器

  • 空参
  • 形参为message

throw和throws区别

throw表示抛出一个异常类的对象,是在异常对象产生的过程中。声明在方法体内

throws是处理异常的一种方法,声明在方法的声明处


手动抛出异常

抛出异常一般为Exception、RunTimeException

  • 在方法体内声明:throw new Exception(“*****”);
    然后在方体声明处throws Exception

两种处理方式体会

try-catch-finally

  • 真正将异常给处理掉了

throws+异常处理

  • 只是将异常抛给了方法的调用者。并没真正将异常处理掉

选择方式

  • 如果父类中被重写的方法没throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果子类重写的方法中异常,必须使用try-catch-finally方式处理。
  • 执行的方法a中,先后又调用了另外的几个方法,这几个方法是递进关系执行的。我们建议这几个方法使用throws的方式进行处理。而执行的方法a可以考虑使用try-catch-finally方式进行处理。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值