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...