java异常处理语法_Java异常处理

一、背景介绍

java 程序在运行过程中发生错误或异常情况是不可避免的,如果每次错误都由程序员手动控制和处理,其工作量极大,对于程序员来说,如果将过多的精力放在异常的处理上,程序员就可以不用再做其他事情了。

Java语言定义了很多异常类,将运行错误和异常的信息和处理方法封装在了异常类中,帮助程序员检查和控制异常,这样程序员就可以将时间和精力放在业务逻辑的实现上,而这套机制就是java的异常处理机制。

二、异常分类2ced565d43c66eec10c589524fc4c9e8.png

Java语言按照错误严重性,从throwale根类衍生出Error和Exception两大派系

Error(错误)a739ef1ba60c42f0cacc586144e75f71.png

Exception(异常)a739ef1ba60c42f0cacc586144e75f71.png

编译时异常:a739ef1ba60c42f0cacc586144e75f71.png

运行时异常:a739ef1ba60c42f0cacc586144e75f71.png

所以,java语言处理运行时错误有三种方式,一是程序不能处理的错误,

二是程序应该避免而可以不去捕获的运行时异常,

三是必须捕获的非运行时异常。8b22ab26ef493287a87a82da4f4b89c6.png

三、java异常处理机制

java默认处理机制:

1 抛出异常

2终止程序

异常处理程序机制:

1抛出异常

2try-catch-finally 捕获和处理异常

关键字

语法 try-catch

语法 finally

a523adce009417286c0349f2fb00a754.png

(***):不管是否有异常都会执行,即使使用return强制结束也会执行,唯一不执行情况System.exit(status);a523adce009417286c0349f2fb00a754.png

a523adce009417286c0349f2fb00a754.png

(***):排列catch 语句的顺序:先子类后父类,发生异常时按顺序逐个匹配,只执行第一个与异常类型匹配的catch语句a523adce009417286c0349f2fb00a754.png

语法 throws

语法 throw

四、如何优雅的设计异常

如何选择异常a739ef1ba60c42f0cacc586144e75f71.png

应该抛出怎样的异常a739ef1ba60c42f0cacc586144e75f71.png

ok,看了以上代码以后,你也许心中有一些想法,原来受检异常可以控制义务逻辑,对,没错,通过受检异常真的可以控制业务逻辑,但是切记不要这样使用,我们应该合理的抛出异常,因为程序本身才是流程,异常的作用仅仅是当你进行不下去的时候找到的一个借口而已,它并不能当成控制程序流程的入口或出口,如果这样使用的话,是在将异常的作用扩大化,这样将会导致代码复杂程度的增加,耦合性会提高,代码可读性降低等问题。那么就一定不要使用这样的异常吗?其实也不是,在真的有这样的需求的时候,我们可以这样使用,只是切记,不要把它真的当成控制流程的工具或手段。那么究竟什么时候才要抛出这样的异常呢?要考虑,如果调用者调用出错后,一定要让调用者对此错误进行处理才可以,满足这样的要求时,我们才会考虑使用受检异常。

应该选用哪种异常a739ef1ba60c42f0cacc586144e75f71.png

通过以上的描述和举例,可以总结出一个结论,RuntimeException异常和受检异常之间的区别就是:是否强制要求调用者必须处理此异常,如果强制要求调用者必须进行处理,那么就使用受检异常,否则就选择非受检异常(RuntimeException)。一般来讲,如果没有特殊的要求,我们建议使用RuntimeException异常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值