当前位置:   article > 正文

Java 异常处理_java: 未报告的异常错误java.lang.exception; 必须对其进行捕获或声明以便抛出

java: 未报告的异常错误java.lang.exception; 必须对其进行捕获或声明以便抛出

1. 异常例子

class TestTryCatch {
    public static void main(String[] args){
        int arr[] = new int[5];
        arr[7] = 10;
        System.out.println("end!!!");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出:(越界)

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
	at TestTryCatch.main(TestTryCatch.java:4)

进程已结束,退出代码1
  • 1
  • 2
  • 3
  • 4

2. 异常处理


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!!!");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

输出:

数组范围越界!
异常:java.lang.ArrayIndexOutOfBoundsException: 7
一定会执行finally语句块
end!!!
  • 1
  • 2
  • 3
  • 4

3. 抛出异常

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

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);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

输出:

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

输出:(报错)

java: 未报告的异常错误java.lang.Exception; 必须对其进行捕获或声明以便抛出
  • 1

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

改为:

TestTryCatch obj = new TestTryCatch();
try{
    obj.add(4, 0);
}
catch (Exception e){
    System.out.println("必须处理异常:"+e);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出:

必须处理异常:java.lang.ArithmeticException: / by zero
  • 1

4. 编写异常类

语法:(继承 extends Exception 类)

class 异常类名 extends Exception{
	......
}
  • 1
  • 2
  • 3
class MyException extends Exception{
    public MyException(String msg){
        // 调用 Exception 类的构造方法,存入异常信息
        super(msg);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
try{
    throw new MyException("自定义异常!");
}
catch (Exception e){
    System.out.println(e);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输出:

MyException: 自定义异常!
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/838140
推荐阅读
相关标签
  

闽ICP备14008679号