Java 异常处理

2022-11-26 10:29:48 浏览数 (3)

文章目录
  • 1. 异常例子
  • 2. 异常处理
  • 3. 抛出异常
  • 4. 编写异常类

1. 异常例子

代码语言:javascript复制
class TestTryCatch {
    public static void main(String[] args){
        int arr[] = new int[5];
        arr[7] = 10;
        System.out.println("end!!!");
    }
}

输出:(越界)

代码语言:javascript复制
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
	at TestTryCatch.main(TestTryCatch.java:4)

进程已结束,退出代码1

2. 异常处理

代码语言:javascript复制
class TestTryCatch {
    public static void main(String[] args){
        try {
            int arr[] = new int[5];
            arr[7] = 10;
        }
        catch (ArrayIndexOutOfBoundsException e){
            System.out.println("数组范围越界!");
            System.out.println("异常:" e);
        }
        finally {
            System.out.println("一定会执行finally语句块");
        }
        System.out.println("end!!!");
    }
}

输出:

代码语言:javascript复制
数组范围越界!
异常:java.lang.ArrayIndexOutOfBoundsException: 7
一定会执行finally语句块
end!!!

3. 抛出异常

语法:throw 异常类实例对象;

代码语言:javascript复制
int a = 5, b = 0;
try{
    if(b == 0)
        throw new ArithmeticException("一个算术异常,除数0");
    else
        System.out.println(a "/" b "="  a/b);
}
catch(ArithmeticException e){
    System.out.println("抛出异常:" e);
}

输出:

代码语言:javascript复制
抛出异常:java.lang.ArithmeticException: 一个算术异常,除数0
  • 对方法进行异常抛出
代码语言:javascript复制
void add(int a, int b) throws Exception {
        int c = a/b;
        System.out.println(a "/" b "=" c);
    }
代码语言:javascript复制
TestTryCatch obj = new TestTryCatch();
obj.add(4, 0);

输出:(报错)

代码语言:javascript复制
java: 未报告的异常错误java.lang.Exception; 必须对其进行捕获或声明以便抛出

可见,方法后面跟了 throws 异常1, 异常2...,则 必须 在调用处 处理

改为:

代码语言:javascript复制
TestTryCatch obj = new TestTryCatch();
try{
    obj.add(4, 0);
}
catch (Exception e){
    System.out.println("必须处理异常:" e);
}

输出:

代码语言:javascript复制
必须处理异常:java.lang.ArithmeticException: / by zero

4. 编写异常类

语法:(继承 extends Exception 类)

代码语言:javascript复制
class 异常类名 extends Exception{
	......
}
代码语言:javascript复制
class MyException extends Exception{
    public MyException(String msg){
        // 调用 Exception 类的构造方法,存入异常信息
        super(msg);
    }
}
代码语言:javascript复制
try{
    throw new MyException("自定义异常!");
}
catch (Exception e){
    System.out.println(e);
}

输出:

代码语言:javascript复制
MyException: 自定义异常!

1 人点赞