关于java:Java中trycatchfinally执行顺序

50次阅读

共计 1949 个字符,预计需要花费 5 分钟才能阅读完成。

try、catch 和 finally

  • try 块:用于捕捉异样。

    • 前面能够有 0 个或多个 catch 块。
    • 只能有 0 个或 1 个 finally 块。
    • try 块前面,如果没有 catch 块,则前面必须有一个 finally 块。
    • 执行代码捕捉异样后,进入 catch 块,try 中出现异常代码处前面的代码不会再继续执行。
  • catch 块:用于解决解决 try 中捕捉的异样。

    • 能够有多个 catch 块,进入一个 catch 块后,执行结束后,如果有 finally 块,则进入 finally 块。即便前面还有 catch 块,也不会再进入其余 catch 块。
  • finally 块:无论是否捕捉或解决异样,finally 块中的代码都会被执行。

    • 当 try 块中或者 catch 块中遇到 return 语句时,先执行完 finally 外面的代码后,再执行 return 返回语句。

能够有多个 catch 块,并且 try 块前面,只能有 0 个或 1 个 finally 块

public static void main(String[] args) {
    try {System.out.println("try...");
    }catch (ArithmeticException e){System.out.println("ArithmeticException...");
    }catch (NullPointerException e){System.out.println("NullPointerException...");
    }
    finally {System.out.println("finally...");
    }
}

// 输入后果://try...
//finally...

try 块前面,如果没有 catch 块,则前面必须有一个 finally

public static void main(String[] args) {
    try {System.out.println("try...");
    }
    finally {System.out.println("finally...");
    }
}

// 输入后果://try...
//finally...

执行代码捕捉异样后,进入 catch 块,try 中出现异常代码处前面的代码不会再继续执行

public static void main(String[] args) {
    try {System.out.println("try...");
        int a = 0;
        String str = null;
        System.out.println(str.toString());
        a = a / 0;
    } catch (ArithmeticException e) {System.out.println("ArithmeticException...");
    } catch (NullPointerException e) {System.out.println("NullPointerException...");
    } finally {System.out.println("finally...");
    }
}

// 输入后果://try...
//NullPointerException...
//finally...

当 try 块中或者 catch 块中遇到 return 语句时,先执行完 finally 外面的代码后,再执行 return 返回语句。

public static void main(String[] args) {
    try {System.out.println("try...");
        return;
    } catch (ArithmeticException e) {System.out.println("ArithmeticException...");
    } catch (NullPointerException e) {System.out.println("NullPointerException...");
    } finally {System.out.println("finally...");
    }
}

// 输入后果://try...
//finally...
public static void main(String[] args) {
    try {System.out.println("try...");
        int a = 0;
        a = a / 0;
    } catch (ArithmeticException e) {System.out.println("ArithmeticException...");
        return;
    } catch (NullPointerException e) {System.out.println("NullPointerException...");
    } finally {System.out.println("finally...");
    }
}

// 输入后果://try...
//ArithmeticException...
//finally...

正文完
 0