一张图让你明白java异常分类(异常继承关系、自定义异常的写法)

今天碰到一个同事,问我Throwable和Exception什么关系,我说你向上点一下源码,看一下继承关系就知道;

最后我总结了一张异常的继承图:

一张图让你明白java异常分类(异常继承关系、自定义异常的写法)_第1张图片

注释:Error和RuntimeException属于Unchecked Exception(非检查异常);

          try catch语句捕获多个异常时,如有诸如上述的继承关系,子类异常在前,父类的在后捕获。

         (1)Error:jvm中出现不可恢复的错误,如堆内存溢出等,程序是没有处理机会的。

         (2)运行时异常(RuntimeException):属于非检查异常,java编译器忽略其抛出和检查,当在加载运行后,出现的异常;常见有:ArrayIndexOutofException、NumberFormatException、NullPointerException、ClassCastException、ClassNotFoundException等。

         (3)非运行时异常:也叫可处理异常,程序编译时,就提示的异常。如:自定义异常、IOException、SQLException、FileNotFoundException等。

         (4)自定义异常示例:自定义异常根据需求使用throw关键字引发异常。

//①自定义异常类继承Exception

class TestException extends Exception{

    String message = "";

    public TestException(String message) {

       this.message = message;

    }

    @Override

    public String toString() {

       return message;

    }

}

//②自定义异常用throw设置触发

public class Demo {

    public static void main(String[]args) throws Exception{

           String e = "asdfabc";

       if(e.contains("abc")){

           throw new TestException("包含非法字符");

       }

    }

}


你可能感兴趣的:(java异常)