CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

「java三分钟」什么是异常Exception-永久免费的源码丞旭猿

关注我,每天三分钟,轻松掌握一个java知识点。

异常机制是程序正常退出的一种机制,异常机制提供了程序退出的安全通道,当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。

如图,Throwable分为Error和Exception。

粗略的解释的话,Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不可处理或者不可恢复的情况。

Exception是java程序运行中可预料的异常情况,可以获取到这种异常,并且对这种异常进行业务外的处理。

Exception又分为检查异常(RuntimeException)和非检查异常(IOException,ClassNotFoundException),其中非检查异常时我们平时编码经常用到,今天重点讲讲非检查异常。

我们在编码中,一般是用 try-catch-finally, throw, throws 这些关键字,他们都都什么时候使用呢?

try-catch-finally:捕获异常并处理。

throw:遇到错误的时候抛出一个异常,可以自定义。

throws:用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传。

在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。

当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。

在使用异常的时候,也要特别注意,什么时候该把异常抛到调用类,什么时候自己try-catch。我曾经系统出了一个异常,看日志就是提示普通的XXX异常,各种找,最后发现是某位小伙伴自己在程序中catch住了,只是通过日志很难找到。

所以小伙伴们涉及到异常的问题时,要多思考这个异常如果出现我是需要抛给上层程序解决,还是需要在方法内try-catch。

再有就是几条关于异常的建议:

1.try块中的局部变量和catch块中的局部变量(包括异常变量),以及finally中的局部变量,他们之间不可共享使用。

2.finally最好用来释放资源关闭流就可以了,不要写过多的业务代码进去。

3.将尽量将所有的return写在函数的最后面,而不是try … catch … finally中。

4.如果使用多catch,子类异常放前面,父类异常仿后面,因为异常匹配是按照catch块的顺序从上往下寻找的。

5.当子类重写父类的带有 throws声明的函数时,其throws声明的异常必须在父类异常的可控范围内——用于处理父类的throws方法的异常处理器,必须也适用于子类的这个带throws方法 。这是为了支持多态。

以上就是今天分享的全部内容了,创作不易,希望大家多多关注,收藏,评论支持,谢谢大家!

举报/反馈

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容