Java 异常 体系 学习 笔记

1、异常概念

在Java当中,一旦当程序产生了异常之后,JVM默认的处理机制是这样的:在产生异常的代码处自动创建一个该异常的对象,随后将异常对象抛出,随后JVM内存直接中止运行了。

Java异常体系主要就是学习有哪些异常,包括出现一些异常之后我如何对异常进行处理,从而使得程序的运行的损失降低的最低点。

2、Java异常体系—Throwable的子类

Java异常整体分为两类:

Error类型的异常:一般是因为硬件设备的问题导致的一些异常,这种异常就算我们编写了针对性的代码也解决不掉,因此这种异常干脆不做任何的处理。

StackOverflowError和OOM

Exception类型的异常:这种异常一般是因为代码自带的或者是程序员编写代码的时候逻辑出现问题导致的错误都成为exception异常。Exception类型的异常又分为两类:

1、编译时异常-受检异常:在我们使用javac命令编译代码时就会出现的异常称之为编译时异常,这种异常需要开发人员必须手动解决,不解决代码永远无法编译或者运行。

2、运行时异常-非受检异常:运行时异常就是我们在编译代码的时候不会出现任何的问题,可以顺利的编译称为class字节码文件,但是当我们运行的时候,因为无法分别分配或者是其他原因导致的异常称之为运行时异常,异常一般也是不解决的。运行时异常一般是不受控制的,我们可能根本不知道哪一行代码会出现运行时异常。

3、异常的解决方案

(1)抛出throws—只有方法的抛出

当我们Java程序在运行过程中,如果某一行产生异常之后,JVM会在异常行的位置新建一个该异常的对象,随后异常行之后的代码均停止执行,随后异常对象会被方法抛出,抛出给调用者,然后调用者进行处理,调用者也可以选择抛出处理,如果所有的调用者都是抛出处理,main主方法也是抛出处理,那么程序就直接终止了。

抛出的语法:

访问控制修饰符  static fianl 返回值类型 方法名(xxx) throws 异常类或者是异常类的父类{}

(2)捕获try catch finally—特殊的代码块处理机制

在异常的两种处理机制中,抛出是一种极不负责任的解决方式,真正可以解决异常问题是try catch finally体系。

使用方式:

try{

		异常代码;
   	如果try块的某一行代码执行出了问题,那么try块剩余的代码均不执行了,随后进行catch匹配,看看异常使用哪个catch解决,最后都要执行一下finally方法。

}catch(异常类 异常对象名){

 		异常的解决方案

}catch(xxxxx){

}finally{
   
 
}

catch块可以有无数个,但是在些catch块的时候,必须按照异常的从小到大的顺序依次捕获。

【注意:两种异常解决方案的使用问题】

结合使用的,一般由最底层的方法抛出异常,然后由调用者进行异常的捕获操作。

特殊的情况,方法重写的情况,如果父类方法没有抛出异常,子类方法产生了编译时异常,那么子类方法只能进行捕获操作,无法进行抛出操作,如果父类抛出了异常,子类不能抛出比父类更大的异常。

4、Java异常的产生的过程问题

当Java代码在运行过程中,如果某一行突然出现了错误bug,一般是由JVM内存在异常产生行的位置创建一个该异常的异常类对象,随后将异常类对象抛出,抛出之后查看异常处是否对该异常有解决方案,如果有的话,按照异常的解决方案进行解决,如果没有解决,那么直接原地报错。

除了由JVM内存帮助我们自动产生异常对象,我们也可以基于这个思想在代码中,合理的利用异常机制自己产生异常的报错,来进行相关功能的开发。

手动抛出方式为:throw new xxxExpection(“message”);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Augenstern K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值