你这么优秀,一定会关注我↑↑↑,对吧~

版权信息|本文原作者“程序猿说你好”,转载自人云亦云。

整理下Java的常用异常。正确使用异常在实际编码中非常重要,但面试中的意义相对较小,因为对异常的理解和应用很难通过几句话或几行代码考查出来,不过我们至少应答出三点:异常类的继承关系、常用异常类、常用异常类的使用场景,下文将围绕这三点介绍。

异常类的继承关系

Java中,所有异常都继承自Throwable类(一个完整可用的类)。整体上分为Error、Exception两个大类,Exception大类又分为UncheckedException(继承于RuntimeException)和CheckedException(继承于Exception,但不继承于RuntimeException)。

为了帮助理解,我在每个类别下都给出了两个常用子类,如Error包OutOfMemoryError、AssertionError等;UncheckedException包括NullPointerException、IllegalArgumentException;CheckedException包括IOException、InterruptedException。面试画异常类的继承关系时,要求能清楚的说明几个类别并分类别举几个常用的异常类。

常用异常类

下面分类别扩充一下常用的异常类,字典序排序:

需要着重理解的是UncheckedException。

常用异常类的使用场景

常用异常还是有点多,下面分别讲解上述三个类别的使用场景,并在每个类别中选一个例子进行讲解。

Error

Error通常描述了系统级的错误,并且程序猿无法主动处理——当然,系统级错误也有可能由代码间接导致,这不在我们的讨论范围内。发生系统级错误的时候,系统环境已经不健康了,因此,Error不强制捕获或声明,也就是不强制处理,一般情况下只需要把异常信息记录下来(如果能记下当时的系统快照更好)。

OutOfMemoryError

当可用内存不足时,会由JVM抛出OutOfMemoryError。一般由三种原因导致:

堆设置过小,不满足正常的内存需求

代码中存在内存泄露,占用了大量内存而不能被回收

选择的GC算法与某些极端的应用场景不匹配,内存碎片过多,没有足够大的连续空间分配给对象

JVM抛出OutOfMemoryError前,会尝试进行一次Full GC,如果GC后可用内存还是不足,才会抛出OutOfMemoryError。因此,这时程序猿必然无法主动处理这一问题,只能等程序崩溃后再去查证原因。

UncheckedException

严格来说,Error也可以被划归UncheckedException,但我们更习惯用UncheckedException描述运行期发生,通常由于代码问题直接引起的程序相关的错误,并且程序猿无法主动处理。注意区分,系统级错误都应该用Error描述。UncheckedException发生的大部分情况是代码写挫了,因此,UncheckedException也不强制捕获或声明,也就是不强制处理,一般情况下记下日志即可。

不同的是,如果可能,要保证UncheckedException是可控的(在异常被动抛出前检查并主动抛出)。

NullPointerException

NullPointerException是最常见的UncheckedException。如果在一个空指针上引用方法或变量等,则运行期会抛出NullPointerException。空指针让程序变的不可控:如果任由空指针在程序运行期随意传递、使用,我们将无法确定程序的行为,也无法确定捕获NullPointerException时程序所处的状态。

解决这一问题的方法很简单:

尽早检查并主动抛出异常

单独、提前处理边界条件

尽量不使用null表示状态,特别是在集合中

前两条原则通用于大部分UncheckedException,可参考String#toLowerCase()的例子。第三条原则需要在代码的健壮与简洁之间做出权衡,有限保证简洁清晰,需要健壮再去健壮。

IOException

产生IOException的原因非常多,但很多时候我们并不关心细节原因,因为文件系统是一个不太可控的因素,这时我们可以以IOException为粒度处理;某些需要关心细节的异常情况,则应使用IOException的子类,以分情况处理。

前面总结的FileAlreadyExistsException、FileNotFoundException、UnknownHostException等,都是IOException的子类。这三种异常恰好都是可以处理的。

(版权声明:推送文章节选自网络,部分内容除非确实无法确认,我们都已取得授权并注明作者和来源。若涉及版权问题,烦请原作者联系我们。联系方式:270834121@qq.com)

END

更多教育类资讯还可关注“恒智集团”

点击下方“阅读原文”查看更多成长干货。多多留言,小编就来勾搭你啦~

西安恒智小寨java_Java常用异常整理相关推荐

  1. 西安恒智小寨java_长安反编译工具 java

    我们可以使用,长安)来设置. 面的跳转等到都获到该页面后再该页所有数据取完,反编目的据法的该方是获取数.没有底层的路因为由了已经由依赖了这个再也子路是最,译工模块的ae配这个置为,的[的后面]中所以是 ...

  2. java通用异常_Java常用异常整理

    填坑,整理下Java的常用异常.正确使用异常在实际编码中非常重要,但面试中的意义相对较小,因为对异常的理解和应用很难通过几句话或几行代码考查出来,不过我们至少应答出三点:异常类的继承关系.常用异常类. ...

  3. java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...

    [单选题]在Word 2010的编辑状态,对当前文档中的文字进行"字数统计"操作,应当使用的菜单是( ) [单选题]客运员领带统一,领带夹夹在衬衣的( )钮扣之间. [单选题]文件 ...

  4. JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...

    [填空题]Java语言中常用异常类ClassNotFoundException是用来处理 ( )的异常的类 [填空题]Java语言声明 ( ) 类为会产生"严重错误"的类 [简答题 ...

  5. 小程序 | 小程序中常用的事件 + 事件对象的属性列表 +小程序事件传参 + 小程序全局配置 + 小程序页面配置 + 小程序发起网络数据请求

    文章目录 一.WXML 模板语法 数据绑定 事件绑定 ⭐小程序中常用的事件 ⭐事件对象的属性列表 target 和 currentTarget 的区别 bindtap 的语法格式 在事件处理函数中为 ...

  6. 微信小程序原生常用语法 1

    微信小程序的教程 学习目标 如何创建小程序项目 小程序项目的基本组成结构 小程序页面由几部分组成 小程序中常见的组件如何使用 小程序如何进行协同开发与发布 小程序的宿主环境 小程序标准开发模式 1.申 ...

  7. Java折半二叉树,成都汇智动力-Java实现常用排序算法

    原标题:成都汇智动力-Java实现常用排序算法 排序算法介绍 1. 基本概念 稳定性: 待排序的数列中,若两个元素的值相等 R1 = R2 ,在排序结束之后,元素之间的相对位置没有发生变化,则称排序算 ...

  8. Python3下Web下载媒体小工具(常用来下B站视频)

    Python3下Web下载媒体小工具(常用来下B站视频) 项目地址:https://github.com/soimort/you-get 使用条件 需要以下依赖项: Python 3.2或以上 FFm ...

  9. 数据结构乐智教学百度云_巧虎《乐智小天地》早教动画片视频全集资源百度云网盘下载...

    提示:如支付成功后,未显示下载按钮,请复制并访问括号中的网址(https://www.qingmo.net/article/21294.html?x=y),其它问题联系邮箱:dimail@qq.com ...

最新文章

  1. 实验吧 速度爆破
  2. 深度学习基础(十二)—— ReLU vs PReLU
  3. Qt高级——QTestLib单元测试框架
  4. 前端趋势榜:上周最 yyds 的 10 大前端项目 - 211101
  5. 记一次继承了AbstractAuthenticationProcessingFilter 的过滤器被执行了两次问题
  6. OpenCASCADE可视化:3D演示之图形基元
  7. RequireJS模块化之循环依赖
  8. Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
  9. 传输层端口号的范围是多少?被分为哪两部分_第三章, 传输层
  10. FLASH的知识【转】
  11. 2008年12月信息处理技术员上午试卷 51CTO版参考答案
  12. cor软件免费下载_CDRX4软件免费版
  13. HTML页面跳转的几种方式(重定向)
  14. linux未找到命令rpm,RPM命令执行失败:bash: rpm: 未找到命令...
  15. C语言if 语句的基本用法
  16. 工程师思维 vs 销售思维
  17. 电脑速度慢是什么问题导致的
  18. Hive数仓实战--用户行为分析-每日周月活跃设备统计
  19. 俞敏洪励志演讲稿【二】
  20. Focus事件与blur事件

热门文章

  1. 自动微分(Auto differentiation)
  2. error C2440 无法转换到 AFX_PMSG mfc自定义信号及实现 PostMessage FindWindow
  3. 中金环境携手海通安恒,启动SAP二期项目
  4. TIM1_CH1N和TIM1_CH1的区别和控制
  5. GEO数据库数据下载
  6. 云南大学通信工程827考研上岸经验分享
  7. win10中Elan触摸板启用“双指点击打开右键菜单“与“双指滚动“方法总结
  8. 用certbot申请https证书
  9. Xcode 模拟器如何录屏
  10. 如何利用英特尔管理工具绕过Windows防火墙