我是靠谱客的博主 精明小猫咪,这篇文章主要介绍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

复制代码
1
2
3
4
5
@Test void nullPointExceptionTest(){ Staff staff = null; staff.getAge(); }

执行结果


java.lang.NullPointerException
    at ...


2.2 可检查异常 ClassNotFoundException

复制代码
1
2
3
4
5
6
7
8
@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

复制代码
1
2
3
4
5
6
7
8
9
10
11
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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部