我是靠谱客的博主 精明小猫咪,最近开发中收集的这篇文章主要介绍Java异常体系-Throwable、Error、Exception,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 异常体系

   Throwable 类是java语言中所有Error类与Exception类的超类(superclass)。除RuntimeException类和Error类及它们的子类之外,Throwable类及其子类称为检查异常(checked exception)。

   RuntimeException类和Error类及它们的子类,被称为非检查异常(unchecked exception)。当JVM产生并抛出Error异常时,指示系统出现了严重的问题,而一个合理的应用程序都不应该捕获该异常,应该不catch,或者catch后抛出。

  Java异常体系继承图如下,

2.异常示例

2.1 非检查异常(运行时异常)NullpointException

    @Test
    void nullPointExceptionTest(){
        Staff staff = null;
        staff.getAge();
    }

执行结果


java.lang.NullPointerException
    at ...


2.2 可检查异常 ClassNotFoundException

    @Test
    void classNotFoundException(){
        try {
            Annotation[] hellos = Class.forName("Hello").getAnnotations();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

执行结果


java.lang.ClassNotFoundException: hello
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:340)
    at ...


2.3 非检查异常(Error子类)StackOverflowError

    int stackDeep = 0;
    @Test
    void stackOverflowErrorTest(){
        getName("hello");
    }

    private String getName(String name){
        stackDeep++;
        System.out.println("Stack Deep: "+stackDeep);
        return getName(name);
    }

执行结果


Stack Deep: 5287
java.lang.StackOverflowError
    at java.base/java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:585)
    at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:301)
    at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:290)
    at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:131)
    at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:208)
    at java.base/java.io.BufferedWriter.flushBuffer(BufferedWriter.java:120)
    at java.base/java.io.PrintStream.writeln(PrintStream.java:722)
    at java.base/java.io.PrintStream.println(PrintStream.java:1028)
    at ...


 

 

最后

以上就是精明小猫咪为你收集整理的Java异常体系-Throwable、Error、Exception的全部内容,希望文章能够帮你解决Java异常体系-Throwable、Error、Exception所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部