Java中的异常

java中的异常是一个类,处理异常就是创建一个异常类对象并抛出这个对象,java处理异常的机制是中断,异常不是语法错了,语法错了编译不通过,不会产生字节码文件,不会运行,而异常是在运行过程中导致JVM非正常停止。
1.异常体系
异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Error(错误不能处理)和java.lang.Exception(通常所说的异常是指Exception)
2.Exception:编译异常与运行异常(IDE会显示编译异常不会显示运行异常)
( 1)编译异常是在进行编译时出现的异常。
(2)运行异常编译不会出错,但是运行过程中会报错。运行异常的典例是访问越界。例如下例(javac编译时未出错,java运行时报错):
在这里插入图片描述
在这里插入图片描述
对于含有异常通过可以使用try-catch结构,抛出异常后程序可以继续执行。如下例:
在这里插入图片描述
try-catch抛出了异常Exception e但是后面的System.out.println(“后续代码”);这条语句也执行了。
注意,并不是try中语句都不执行,而是从出错的地方停止执行:
在这里插入图片描述

3.对于错误(Error)可以通过编译,但是运行时也会出错
在这里插入图片描述

在这里插入图片描述
错误必须修改源代码,否则不能正常执行。

4.throws(其实对于方法来说throws语句写与不写差别不大–不论是程序字代码在JVM运行中出现异常还是用throw语句显式抛出,可能后台运行时异常的转交过程不同)
在一个函数名后面写了throws是把函数执行过程中产生的异常抛出,交给JVM处理,JVM接收异常后会终止运行并输出异常信息。
在这里插入图片描述

5.throw(注意不是throws):程序执行过程中throw异常后程序终止执行。
在这里插入图片描述
RuntimeException是运行期异常,运行期异常及其子类异常不用程序员处理,交给JVM处理,NullPointerException(空指针)和ArrayIndexOutOfBoundsException(数组越界访问)属于运行期异常。
下例是一个ArrayIndexOutOfBoundsException(数组越界访问):
在这里插入图片描述
在这里插入图片描述
注意,如果函数中new的异常对象不是运行期异常对象或其子类的异常对象,则有两种异常处理方式
(1)函数声明后必须加关键字throws:
在这里插入图片描述
格式:
在这里插入图片描述
函数里throw几个异常对象throws后面就要相应地写几个(除非某些是另一个地子类,则可以只写父类)。
在这里插入图片描述
(2)用try-catch捕获异常
在这里插入图片描述
在这里插入图片描述
另外可以写加上final模块,无论是否抛出异常都会执行。格式:
在这里插入图片描述
在这里插入图片描述
6.Objects非空判断
java的内置类Objects有一个静态函数可以判断参数是否为null,若是则会抛出异常。使用它可以简化代码而不用写if语句再new NullPointerException(“xxx”)。
Objects的静态方法源码:
在这里插入图片描述
使用方式:
在这里插入图片描述
上例中若obj为空指针则会抛出异常。
该静态方法还有一个重载方法(多了一个字符串参数,该参数抛出异常信息):
在这里插入图片描述
7.关于子父类的异常
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值