Try Catch进⾏异常捕获

  1. try{
  2. // 可能发⽣异常的代码
  3. }catch(AExceptionName e){
  4. //出异常的时候处理理
  5. }catch(BExceptionName e){
  6. }fianall{
  7. }
  • try后⾯跟⼀个或多个catch块,或一个finally块,或两者的组合
  • catch 不能独⽴于 try ⽽单独存在
  • 如果代码没有对应的异常类进行捕获,则默认打印异常堆栈

image.png
image.png

finally和多重异常捕获

多重捕获

  • ⼀个 try 代码块后⾯跟多个 catch 代码块的情况就叫多重捕获

    1. try{
    2. // 可能发⽣异常的代码
    3. }catch(ExceptionName1 e1){
    4. //出异常的时候处理
    5. }catch(ExceptionName2 e2){
    6. //出异常的时候处理
    7. }
  • 代码中发⽣异常,异常被抛给第一个catch块, 如果不匹配则继续往下⼀个catch进⾏传递

    finally关键字

  • ⽤来创建在 try 代码块后⾯执行的代码块

  • finally 代码块中的代码总会被执⾏
  • 一般⽤于资源回收释放等操作

    1. try{
    2. // 可能发⽣生异常的代码
    3. }catch(ExceptionName1 e1){
    4. //出异常的时候处理理
    5. }finally{
    6. //肯定执⾏行行的代码
    7. }

    或者

    1. try{
    2. // 可能发⽣生异常的代码
    3. }finally{
    4. //肯定执⾏行行的代码
    5. }

    三者的组合

  • try,catch和finally块有两种可能的组合

    • try-catch-finally或try-finally

      异常的抛出throw和声明throws

      代码出异常见的处理方法

  • try catch捕获

  • throws 声明异常 往外抛出
    • 语法:throws⼦句放在⽅法参数列表的右括号之后,⼀个方法可以声明抛出多个异常,
    • 多个异常之间⽤逗号隔开。
      1. public class Main {
      2. public static void readChar() throws
      3. IOException,RemoteException {
      4. int input = System.in.read();
      5. }
      try catch中捕获了异常,处理方法