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