1. 常见的运行时异常包括 1) NullPointerException 空指针异常 2) ArithmeticException 数学运算异常 3) ArrayIndexOutOfBoundsException 数组下标越界异常 4) ClassCastException 类型转换异常 5) NumberFormatException 数字格式不正确异常
public static void main(String[] args) {
String name = "哈哈哈";
//将String 转成 int
int num = Integer.parseInt(name);//抛出NumberFormatException
System.out.println(num);
}
2. 编译异常
编译异常是指在编译期间,就必须处理的异常,否则代码不能通过编译。
常见的编译异常 三、异常处理 1.异常处理的方式2.try-catch 方式处理异常(ctrl + atl + t)
public static void main(String[] args) {
//1.如果try代码块有可能有多个异常
//2.可以使用多个catch 分别捕获不同的异常,相应处理
//3.要求子类异常写在前面,父类异常写在后面
try {
Person person = new Person();
person = null;
System.out.println(person.getName());//NullPointerException
int n1 = 10;
int n2 = 0;
int res = n1 / n2;//ArithmeticException
} catch (NullPointerException e) {
System.out.println("空指针异常=" + e.getMessage());
} catch (ArithmeticException e) {
System.out.println("算术异常=" + e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {}
}
}
class Person {
private String name = "jack";
public String getName() {
return name;
}
}
练习题 (先输出4后输出3)
练习题
public static void main(String[] args) {
//如果用户输入的不是一个整数,就提示他反复输入,直到输入一个整数为止
//思路
//1. 创建Scanner对象
//2. 使用无限循环,去接收一个输入
//3. 然后将该输入的值,转成一个int
//4. 如果在转换时,抛出异常,说明输入的内容不是一个可以转成int的内容
//5. 如果没有抛出异常,则break 该循环
Scanner scanner = new Scanner(System.in);
int num = 0;
String inputStr = "";
while (true) {
System.out.println("请输入一个整数:");
inputStr = scanner.next();
try {
num = Integer.parseInt(inputStr); //这里是可能抛出异常
break;
} catch (NumberFormatException e) {
System.out.println("你输入的不是一个整数:");
}
}
System.out.println("你输入的值是=" + num);
}
}



