1 异常概述
(1)异常:就是程序出现了不正常的情况。
(2)异常类继承至Throwable,Throwable分为Error和Exception。
Error:严重问题,程序无法处理。
Exception:异常类,程序进行处理
(2)Exception分为RuntimeException和非RuntimeException。
RuntimeException:在编译期不处理,出现问题后,修改代码解决。
非RuntimeException:编译期必须处理,否则程序不能通过编译。
2 出现异常时,JVM默认处理方案
(1)把异常名称、原因及异常出现的位置等信息输出在控制台
(2)程序停止运行
3 异常处理try...catch
格式:
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常处理代码;
}
示例:
int[] arr = {1,3,7,6,2};
try{
System.out.println(arr[7]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("数组越界!!");
//e.printStackTrace();
}
4 Throwable 的成员方法
public String getMessage() 返回此throwable的详细消息字符串。
public String toString() 返回此可抛出的简短描述。
public void printStackTrace() 将异常的错误信息输出到控制台。
5 异常处理throws
格式:
throws 异常类名
6 自定义异常
public class 异常类 extends Exception{
无参构造方法
带参构造方法
}
示例:
public class AgeOutException extends Exception {
public AgeOutException() {
}
public AgeOutException(String message) {
super(message);
}
}
import java.util.Scanner;
public class Person {
public void checkAge() throws AgeOutException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个年龄值:");
int age = sc.nextInt();
if (age < 0 || age > 150) {
throw new AgeOutException("你输入的年龄超出了范围0-150!");
} else {
System.out.println("你输入的年龄是;" + age);
}
}
}
public class MyExceptionDemo {
public static void main(String[] args) {
Person person = new Person();
try {
person.checkAge();
} catch (AgeOutException e) {
e.printStackTrace();
}
}
}