Java-异常处理

214 阅读2分钟

记录

日期说明
2023/1/1首次创建

总纲

关于异常捕获的一些概念

类型

  1. 检查性异常
  2. 运行时异常
  3. 错误

捕获异常

  1. catch语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try后面的catch块就会被检查。如果发生的有异常包含在catch块中,异常会被传递到该catch块,这和传递一个参数到方法是一样的

多重捕获块

  1. 一个try代码块后面跟随多个catch代码块的情况。发生异常时一次匹配异常类型,知道遇到合适的类型

throws/throw

  1. 如果一个方法没有活到一个检查行异常,那么改方法必须使用throws关键字来声明。throws关键字放在方法签名的尾部。以恶搞方法可以声明抛出多个异常,多个异常之间用逗号隔开。
  2. 也可以使用throw关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。throw必须配合try-catch或者throws使用
  3. throw和return都能造成程序跳出
  4. throw RuntimeException可以不用throws说明,因为这是运行时错误,java虚拟机会自动抛出,不必在异常说明中列出来

Throwable

  1. Error
  • VitualMachineError
  • AWTError
  • ...
  1. Exception
  • IOException
  • RuntimeException
  • ...

自定义异常

  1. 所有异常必须是Throwable的子类
  2. 运行时异常类需要继承RunTimeException
  3. 检查性异常需要继承Exception

finally

  1. finally关键字用来创建在try代码块后面执行的代码块。无论是否发生异常,finally代码块中的代码总会被执行
  2. 当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行
  3. 4种情况不会执行finally
  • 在finally语句块中发生了异常
  • 在前面的代码中使用了System.exit退出程序
  • 程序所在的线程死亡
  • 关闭CPU
  1. finally里抛出异常或return可能会造成try或catch里异常丢失或return失效