try {
可能出现异常的代码;
} catch(异常类名 变量名) {
异常的处理代码;
}
-
程序从 try 里面的代码开始执行
-
出现异常,就会跳转到对应的 catch 里面去执行
-
执行完毕之后,程序还可以继续往下执行
public static void main(String[] args) {
int[] arr = null;try { printArr(arr); } catch (NullPointerException e) { System.out.println("参数不能为空"); }
}
private static void printArr(int[] arr) {
if (arr ==null){ throw new NullPointerException(); }else { for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } }
}
}
-
如果 try 中没有遇到问题,怎么执行?
会把try中所有的代码全部执行完毕,不会执行catch里面的代码
-
如果 try 中遇到了问题,那么 try 下面的代码还会执行吗?
那么直接跳转到对应的catch语句中,try下面的代码就不会再执行了
当catch里面的语句全部执行完毕,表示整个体系全部执行完全,继续执行下面的代码 -
如果出现的问题没有被捕获,那么程序如何运行?
那么try…catch就相当于没有写.那么也就是自己没有处理.
默认交给虚拟机处理. -
同时有可能出现多个异常怎么处理?
出现多个异常,那么就写多个catch就可以了.
注意点:如果多个异常之间存在子父类关系.那么父类一定要写在下面
import javax.print.attribute.standard.OrientationRequested;
import java.util.PrimitiveIterator;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄");
String line = sc.nextLine();
int age = Integer.parseInt(line); //格式化异常
System.out.println(2/0);
} catch (NumberFormatException e) {
}catch (ArithmeticException b){
System.out.println("除数不能等于0");
}
System.out.println("测试456");
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄");
String line = sc.nextLine();
int age = Integer.parseInt(line);
System.out.println(age);
System.out.println(2 / 0);
} catch (NumberFormatException e) {
System.out.println("格式化异常了");
}catch (ArithmeticException b){
System.out.println("解除异常");
}
}}