Java 异常

1. 异常简介

  Java异常时Java提供的识别响应错误的机制,可以使程序中异常处理代码和正常业务代码分离,提高程序的健壮性。

public class ExceptionTest01{
    public static void main(String[] args){
        try{
            int i = 10 / 0;
            System.out.println("i = " + i);
        }catch(ArithmeticException e){
            e.printStackTrace();
        }
    }
}
运行结果:
java.lang.ArithmeticException: / by zero
        at ExceptionTest01.main(ExceptionTest01.java:5)

  Java中可抛出的异常(Throwable)分为三类:编译时异常,运行时异常和错误

  Throwable是Java中所有异常和错误的父类。

  (1)编译时异常:Exception类本身,和“运行时异常”之外的其他子类

    编译时异常要求在编译阶段进行处理,不处理则编译不通过。

  (2)运行时异常:RuntimeException及其子类

    在编译阶段可处理可以不处理,可以通过throws声明抛出,也可以try-catch捕获异常

  (3)错误

    当资源不足,约束失败,或是其他程序无法继续运行的条件发生时,就会产生错误。

    所有异常都是发生在运行阶段的,发生异常会new对象,在编译阶段不会创建对象。

2. 异常方法的覆盖

  子类中不能比父类抛出更广泛的异常

public class ExceptionTest02{
    public static void main(){
        
    }
}

class Animal{
    public void doSome(){
        System.out.println("animal do something");
    }
}

class Cats extends Animal{
    /*  可以不抛出异常
    public void doSome(){
        System.out.println("animal do something");
    }
    */
    
    public void doSome() throws FileNotFoundException{
        System.out.println("animal do something");  //错误: Cats中的doSome()无法覆盖Animal中的doSome()
    }
}

  

3. 自定义异常

  a. 自定义异常类继承Exception;

  b. 重写无参数和有参数构造方法;

public class MyException extends Exception{
    public MyException(){}
    
    public MyException(String s){super(s);}
}
原文地址:https://www.cnblogs.com/homle/p/15507045.html