Java(15):异常

异常

e

error错误由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。Exception是可以被程序处理的,并且程序应该尽可能去处理这些异常。

五个关键字:

try、catch、finall、throw、throws。

public class Application{
    public static void main(String[] args) {
        int a = 1;
        int b = 0;


        try {
            int c = a / b;
        }catch (Exception e){
            System.out.println(e);
        }finally {
            // finally 可以不要
            System.out.println("不管怎么样都会执行我");
        }
    }

}

可以写多个catch语句来捕获不同的异常,得注意异常程度必须由低到高(见最上面的示意图):

public class Application{
    public static void main(String[] args) {
        int a = 1;
        int b = 0;


        try {
            int c = a / b;
        }catch (Error r){ // 多个异常捕获必须由低到高
            System.out.println("Error");
        }catch (Exception e){
            System.out.println("Exception");
        }catch (Throwable t){
            System.out.println("Throwable");
        } finally {
            // finally 可以不要
            System.out.println("不管怎么样都会执行我");
        }
    }

}

最后的执行结果是打印出“Exception”。

idea中选中代码、CTRL+ALT+T快捷生成异常代码。

主动抛出异常。

throw一般用在方法中抛出异常。然后就可以用try-catch捕获异常,如果在当前代码中不方便使用try-catch捕获异常,那么可以在方法上用throws抛出异常,让其他地方try-catch捕获异常。

if (b == 0){
   throw new Exception(); // 主动抛出异常
}
int c = a / b;

异常假设方法中处理不了这个异常,throws用在方法上抛出异常:

public class Application{
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        new Application().test(a, b);

    }
    public void test(int a, int b) throws ArithmeticException{ // 方法上throws
        if (b == 0){
            throw new ArithmeticException(); // 主动抛出异常
        }
        System.out.println(a/b);
    }

}

自定义异常

使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。只需要继承Exception类即可。

大体有以下几个步骤:

  1. 创建自定义异常类。
  2. 在方法中通过throw关键字抛出异常对象。
  3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
  4. 在出现异常方法的调用者中捕获并处理异常。

。。。。

原文地址:https://www.cnblogs.com/zhangtu/p/14492281.html