【java 异常处理 Exception】java 异常处理 Exception 相关基础知识

异常:

什么是异常?

异常是程序在“编译”或者“运行”的过程中可能出现的问题,注意:语法错误不算在异常体系中。

比如:数组角标越界、空指针异常,日期格式化异常……

为什么要学习异常?

、异常一旦出现了,如果没有提前处理,程序就会退出JVM虚拟机而终止

研究异常并且避免异常,然后提前处理异常,体现的是程序的安全,健壮性

异常体系:

Error:

系统级别问题、JVM退出等,代码无法控制

Exception:java.lang包下称为异常类,它表示程序本身可以处理的问题

       RuntimeException及其子类:运行时异常,编译阶段不会报错,(空指针异常,数组索引越界异常)

       除RuntimeException 之外所有的异常:编译期必须处理的,否则程序不能通过编译(日期格式化异常)

运行时异常

直接继承自RuntimeException或者其子类,编译阶段是不会报错,运行时可能出现的报错

运行时异常示例

数组索引越界异常:ArrayIndexOutOfBoundsException

空指针异常:NullPointerException直接输出没有问题,但是调用空指针的变量的功能就会报错

数字操作异常:ArlthmeticException

类型转换异常:ClassCastException

数字转换异常:NumberFormatException

编译是异常的特点:

       编译时异常:继承自Exception的异常或者其子类

       编译阶段报错,必须处理,否则代码不通过

默认处理异常机制,会引起程序死亡

编译时异常处理的三种形式:

       出现异常直接抛出去给调用者,调用者也继续抛出去

       出现异常自己捕获处理,不麻烦别人

       前两者结合,出现异常直接抛出去给调用者,调用者捕获处理

异常处理方式1——throws

Throws:用在方法上,可以将方法内部出现的异常抛出去给调用本方法发调用者处理

这种方法并不好,发生异常的方法自己不处理异常,如果异常最终抛出去给虚拟机将引起程序死亡

抛出异常格式:

方法 throws 异常1,异常2,异常3……{

}

规范做法:

方法 throws Exception{

}

异常处理方式2——try…catch…

       监视捕获异常,用在方法内部,可以将方法内部出现的异常自己捕获处理

这种方法还可以,发生异常的方法自己独立完成异常的处理,程序可以继续往下执行

格式:try{

}catch(异常类型1 变量){

} catch(异常类型2 变量){

}

建议格式:

try{

}catch(Exception e){

       e.printStackTrace();

}

Exception 可以捕获处理一切异常类型!

异常处理方法3——前两者结合

方法直接将异常通过throws抛出去给调用者

调用者收到异常后直接捕获处理

异常处理总结:

在开发中按照规范来说第三种方式是最好的,底层的异常抛出去给最外层,最外层集中获取处理

实际应用中,只要代码能够编译通过,并且功能能完成,那么每一个异常处理方式似乎也是可以的

运行时异常的处理方式:

运行时异常编译阶段不会出错,是运行时才可能出错的,使用编译阶段不处理也可以

按照规范建议还是处理:建议在最外层调用处集中捕获处理即可

自定义异常的必要?

Java无法为中国世界上全部的问题提供异常类

如果企业想通过异常的方式来管理业务问题,如提醒程序员注意

同时一旦出现bug,可以用异常的形式清晰的指出出错的地方

自定义异常分类

1.自定义编译是异常:

       定义一个异常类继承Exception

       重写构造器

       在出现异常的地方用throw new 自定义对象抛出

作用:编译时异常是编译阶段就报错,提醒更加强烈,一定需要处理

2、自定义运行时异常

       定义一个异常类继承RuntimeException

       重写构造器

       在出现异常的地方用throw new自定义对象抛出

作用:提醒不强烈,编译阶段不报错!!运行时才可能出现!!

###

学习过程中的一些小笔记,有问题可以帮忙纠正一下,欢迎一起讨论!!~

###

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小白菜鸟……

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

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

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

打赏作者

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

抵扣说明:

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

余额充值