image.png

程序的 exit code

  • 0 正常运行结束后退出
  • 1 非正常退出, 此处必须伴随着异常的发生, 且这个异常没有被处理

    方法允许结束后的返回有2种

  • **正确返回

  • 错误返回

**

捕捉异常

  • 使用try {} catch () {} 语句捕捉对方抛出的异常对象
  • 在catch块后面的小括号中声明一个异常变量来接收对方抛出的异常对象, 异常类型可以是 >= 对方抛出的异常对象的类型
  • 在catch块后面的大括号中编写处理异常的语句 ```java try{

}catch(异常类型 e){

}finally{

} ```

官方给出的异常类型体系结构

Throwable

官方设定: 只有使用Throwable的子类造的对象, 才可以使用throw关键字进行抛出, 使用catch进行捕捉

Exception

  • 应该由程序员处理的异常, 编译时异常的最高父类

    Error

  • 程序员无法处理的异常, 是硬件层面的错误

    RuntimeException

  • 运行时异常的最高父类

异常对象的作用

  • 当方法发生异常返回的时候, 携带异常信息
  • 如果只是需要携带一个字符串信息, 那么使用Exception类就可以了
  • 如果想要携带更多的信息, 应该自己定义一个子类去继承Exception. 然后在子类中添加特有的成员来记录更多异常信息

异常对象中的常用方法 (从Throwable中继承的)

  • getMessage() 获取异常携带的字符串信息
  • printStackTrace() 打印栈的追踪信息

自定义异常类型

  • 继承Exception
  • 继承RumtimeException

编译时, 异常是否受检

  • 受检 (所有直接或间接继承Exception的子类)
    • 如果没有在编译之前处理, 则无法通过编译器检查,
  • 不受检 (所有直接或间接继承RuntimeException的子类)
    • 在编译之前不处理也可以通过编译

异常处理的两种方式

  • 在方法内部直接捕捉
  • 抛出给上层方法
    • 在方法的参数列表后面使用throws 异常类型

throw 和 throws 的区别

  • throw 是抛出一个异常对象
  • throws 是声明方法中有异常对象抛出,并且该方法自己没有处理, 需要上层调用者进行处理。