java如何用throw处理异常_技术干货分享:Java开发必备技能之异常处理机制
发布日期:2021-06-24 11:44:31 浏览次数:2 分类:技术文章

本文共 1276 字,大约阅读时间需要 4 分钟。

原标题:技术干货分享:Java开发必备技能之异常处理机制

我们在从事java开发过程中,或多或少都会遇到一些我们程序员不被期望的事件,它会影响整个程序的整体运行,针对此类情况,Java提供了一种专门处理这类问题的机制:异常处理机制。

我们今天就来了解下它是如何来处理异常情况的。

Java异常简介

程序中出现的错误被称为异常

异常可分为两大类:编译时异常和运行时异常;

编译时异常一般是指语法错误,可以通过编译器的提示加以修正,这里我们不予讨论;

a739f014a5789dce5cfd0c5e984adccd.png

运行时异常包括:

运行错误:如数组下标越界,除数为0等;

逻辑错误:如年龄超过200岁等

399244bcd14c5623f6b134bb7999d7b9.png

产生异常的原因多种多样,大致有:

系统资源不可用:如内存分配失败,文件打开失败,数据源连接失败等等;

程序控制不当:如被零除,负数开方,数组下标越界等等。

452524eaf8d01da3df835fb8ac74205d.png

当异常发生时,程序一般会作出如下反应:

发生异常的部分产生系统定义的错误信息;

程序意外终止,并将控制权返回操作系统;

程序中所有已分配资源的状态保持不变,这样将会导致资源泄漏。

那么我们就必须对有可能产生的异常进行处理

Try块与catch块

try块:一般用来监视有可能产生异常的代码部分;

catch块:当异常产生后,catch块捕捉异常,并在其中对异常进行处理。

8c28e145e777b5e7f926b54964753e91.png

代码示例:

ee6bf48b2d62c83d03b1130393ad8237.png

finally块

无论try/catch块中发生了什么,finally块都一定会执行;

当异常发生时,程序可能会意外中断,有些被占用的资源就得不到清理。finally块可以确保执行所有的清理工作;

无论是否发生异常,finally块都将执行;

finally块是可选的,可视具体情况决定是否添加;

finally块必须和try块一起使用,不能单独存在

152f60d0ac89b3009e9c182e2377c732.png

Throw关键字

throw语句用于手工抛出异常;

执行流程将在throw语句后立即停止,转而寻找与之类型相匹配的catch块;

throw语句的语法是:

throw (异常类型的实例);

Throws关键字

如果某个函数中的代码有可能引发异常,可以使用try/catch块进行处理,这种处理方式成为“内部处理”;

如果不方便在函数内部进行处理,也可以将异常往函数外部传递,这就要使用到关键字throws;

throws用于将函数内部产生的异常抛给主调函数;

一般语法:

返回值类型函数名(参数列表) throws异常类型{

……

}

常见的异常类

780f49cc8982a93ea8a20e979228d136.png

异常类的体系结构图

bea044d2d9be0eb5d842acc00c48909a.png

我们来总结一下:

异常是运行时产生的错误;

可以使用try/catch/finally块,配合使用来处理异常;

如有多种类型的异常要进行处理,可以使用多重catch块;

要手动发生异常,使用throw关键字;

任何抛到函数外部的异常,都必须使用throws关键字指定其异常类型;

请注意throw和throws的区别;

自定义异常类一般继承于Exception类;

Exception类是绝大部分异常类的父类,在异常类型不明的情况下,可以都认为是Exception。

OK,异常处理机制今天就分享到这里,你是不是学会了呢?返回搜狐,查看更多

责任编辑:

转载地址:https://blog.csdn.net/weixin_32569115/article/details/114961810 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:php 自动生成12位数字_php生成12位随机密码
下一篇:python五环绘制代码_python图形绘制奥运五环实例讲解

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月21日 12时06分39秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

apm性能监控系统,微信小程序的事件处理,好文推荐 2019-04-29
app架构图,三级缓存框架问题你都了解了吗?面试必备 2019-04-29
app架构,靠这份Android知识点PDF成功跳槽,内含福利 2019-04-29
BAT大厂最爱问的Android核心面试百题详细解析!这原因我服了 2019-04-29
BAT大厂面试基础题集合,成功入职腾讯 2019-04-29
BAT常见的20道Android面试题详解,全网疯传 2019-04-29
BAT等大厂必问技术面试题,妈妈再也不用担心我找工作了! 2019-04-29
BAT等大厂必问技术面试题,成功拿下大厂offer 2019-04-29
一眼就能看懂的Android自学手册,送大厂面经一份! 2019-04-29
一线互联网大厂中高级Android面试真题收录!大牛最佳总结 2019-04-29
一线互联网大厂中高级Android面试真题收录!持续更新中 2019-04-29
一线互联网移动架构师360°全方面性能调优,深度解析,值得收藏 2019-04-29
一线互联网移动架构师Android框架体系架构!附带学习经验 2019-04-29
一线互联网移动架构师设计思想解读开源框架!年薪超过80万! 2019-04-29
万字Android技术类校招面试题汇总,Android岗 2019-04-29
万字长文总结Android多进程,大厂直通车! 2019-04-29
万字长文总结Android多进程,面试心得体会 2019-04-29
万字长文轻松彻底入门Flutter,震撼来袭免费下载! 2019-04-29
JNI层MediaScanner的分析,成功入职阿里 2019-04-29
JNI层MediaScanner的分析,赶紧收藏备战金三银四! 2019-04-29