首页 > 编程知识 正文

java异常体系结构,异常的继承结构

时间:2023-05-05 14:05:30 阅读:156117 作者:4585

Java异常原理分析

异常概要

异常是不正常的意思,Java中的异常是指程序发生了错误,或者程序出现了异常的状况。 例如,classnotfoundexception/nullpointexception ()类找不到异常和空指针异常) )。

异常的继承体系

之前学习了集合,从集合的继承体系中学习了。 也就是说,从根部开始学习。 例如,Collection和Map是集合的根。 继承体系就像一个个知识点的骨架。 骨架弄清楚了,一个个知识点的上下文就清楚了。 所以我们学习异常,也是从异常的继承体系中学习!

Java中的异常继承体系图:

异常的根据是Throwable (意味着可以扔出去),有Error和Exception两个分支。 让我们来讨论一下Error和Exception。

Error (这种异常的发生原因不是程序的原因,而是计算机的CPU发生硬件故障(硬件原因)、程序执行中内存溢出)、环境原因等,导致程序无法正常执行等

因为这种类型的异常不是程序自身的原因! 我们都不研究这种异常!

Exception:这种类型的异常是由程序原因引起的,是我们重点研究的对象! 这种类型的异常包括编译时异常(非RuntimeException )和运行时异常。 接下来就这两个异常进行说明!

非RuntimeException:的编译时异常是编译过程中出现的代码错误,如语法错误、语句忘记加分或关键字写错。 这种错误在Eclipse等高级开发工具中出现是红色波浪线的错误提示。 这意味着不解决此异常,Java程序无法编译为字节码文件!

RuntimeException:运行时异常,即在程序执行过程中出现的异常。

Java中的异常与现实生活类比

假设,我们程序的执行在我们的生活中就像“自驾游”。

自行过程中可能发生的情况(模拟程序异常) :

1、开车去旅行途中,必须经过桥。 如果这座桥被洪水折断了! 旅行被中止了!

这类似于硬件/环境迫使程序退出的情况。

这种情况对应着我们的程序异常是Error类的异常!

2、我们正要开车去旅行的时候,开车前定期检查,发现轮胎没气了! 这个时候不把轮胎爆胎就不能出发。

出现这种情况就像我们的Java异常中的编译期异常一样。 如果不好好处理这个异常,程序就不能运行!

3、自行行驶中,开车在路上行驶,突然发动机坏了,现在程序中止了。 这个时候必须修车。 修好车后可以继续跑。

这就像我们程序运行时的异常一样!

编译和运行时异常的代码演示:

异常的处置

编译时异常处理

编译时异常必须处理,不处理程序就不能执行!

1、对于语法错误之类的异常,直接纠正即可。

2、对于JDK定义的编译时异常,需要进行显示处理。

什么是JDK自己定义的编译期异常?

JDK认为可能发生异常的代码,必须处理的异常是JDK的自定义编译异常。 在这种情况下,代码没有语法错误,但eclipse会报告错误! 有异常的代码会显示红色波浪线! 如下图所示

l异常的显示处理方案?

a、声明方法时用throws声明该方法中可能存在的异常。 (自己不处理异常,交给呼叫方处理) )。

b、用try…catch方式捕获异常代码块进行处理。

在下图中添加两个异常处理方案。

运行时异常处理

可以不处理运行时异常。 如果不处理,程序就可以运行,但是如果在运行中遇到运行时异常,程序会抛出异常并结束程序的执行

如下图所示。

运行时异常和编译时异常的解决方案有两种,但throws的异常解决方案对运行时异常来说是一样的! 写了就等于没写!

如果用try…catch方式处理异常,无论该异常是编译时的异常还是运行时的异常,都可以执行该异常代码后的代码! 如果不通过try…catch处理,则发生异常后的代码不会执行。 jvm是发生异常的位置,它将异常封装在一个异常对象中并抛出方法。 如果调用方法的方法也未被处理,则直接抛出。 如果仍未处理,则最终会将异常抛出到jvm。 当JVM接收到异常时,它将退出程序并打印有关异常对象的信息!

还没有下文。

如果想和作者交流或者学习Java,欢迎使用qq交流群: 576159719

如果你以为你还记得点赞! o(_) ) o哈哈哈~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。