JAVA异常(一)异常机制

一、异常的定义:
二、异常的分类:
三、为什么要引入java异常机制;

一、异常的定义:
异常情形:是指阻止当前方法或作用域继续执行的问题。
二、异常的分类:

在这里插入图片描述
JAVA异常最顶级的父类位:Throwable
在这里插入图片描述
其直接继承自Object类
其子类有二:Error,Exception
Error:是程序中无法处理的错误,表示运行应用程序中出现严重的错误。此类错误一般表示代码运行时JVM出现问题。通常有Virtual MachineError(虚拟机运行错误),NoClassDefFoundError(类定义错误)等。
在这里插入图片描述
Exception:程序本身可以捕获并且可以处理的异常。
(你将看到,对于异常来说最重要的部分就是类名!)
可分为两类:
非运行时异常(受检异常):Exception中除RuntimeException及其子类之外的异常。编译器会检查此类异常,如果程序中出现此类异常,比如IOException,必须对该异常进行处理,要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

运行时异常(不受检异常):RuntimeException类及其子类表示JVM在运行期间可能出现的错误。编译器不会检查此类异常,并且不要求处理异常,比如用数组下标越界(ArrayInexOutBoundException)、空值对象引用(NullPointerException)此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。
在这里插入图片描述
这里可以比较一下NoClassDefFoundError和ClassNotFoundException区别
异常最重要的就是就是类名,从类名上看两个异常的字面意思都是类找不到,那为什么需要使用两个异常进行区分勒?这两个异常有什么不同的地方呢?

  1. 首先父类继承不一样:ClassNotFoundException是继承自Exception异常而NoClassDefFoundError则是错误继承自Error类型
    2.触发原因:当动态加载Class的时候找不到类会抛出该异常 ,例如执行Class.forName()、ClassLoader.loadClass()时抛出,属于运行时受检型异常。而NoClassDefFoundError为当编译成功以后执行过程中Class找不到导致抛出该错误,并且由JVM的运行时系统抛出!
    这是一个比较经典的面试题啦
三、为什么要引入java异常机制;
  • 首先发现错误的理想时机是在编译阶段,然而编译期间并不能找出所有的错误,余下的问题必须在运行期间解决(RuntimeException运行时异常)。因此这个时候就需要引入一套机制,将错误源通过某种方式,把适当的信息传递给某个接受者(将异常进行抛出throw)——该接受者将知道如何正确处理这个问题(try——catch捕获处理)。
  • 其次比较:这个最好能与C以及其他早起语言进行对比才更能体现其优势。这些模式往往建立在约定俗成的基础之上,而并不属于语言的一部分通常会返回某个特殊值或者设置某个标志,并且假定接收者将对这个返回值或标志进行检查,已判定是否发生错误。而随着时间的推移,人们发现高傲的程序员在使用程序库的时候更倾向于认为“错误肯定不在于我”,因此程序员不去检查错误也就不奇怪了。
  • 最后因此异常处理是java中唯一正式的错误报告机制,并且通过编译器强制执行! 由于Java的主要目标之一就是创建供他人使用的程序构件,需要强有力的健壮性而错误的恢复机制是提供代码健壮性的强有力的方式。并且Java的异常处理能够降低错误处理代码的复杂度;而且把“描述在正常执行过程中做什么事”的代码和“出了问题如何处理”的代码相分离,总之,与以前的错误处理方法相比,异常机制使代码的阅读、编写和调式工作变的简单

四、小结
主要是梳理了一下java异常的继承结构,各类面对的情况并且进行比较了NoClassDefFoundError和ClassNotFoundException区别。然后最重要的主要是理解为什么要引入java异常机制!下一节进行说明如何处理java异常。
JAVA异常(二)异常处理机制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值