一、异常分类

异常处理机制的角度可以分为两类,Unchecked Exceptions和Checked Exceptions。Check即编译器检查程序是否已经抛出或处理了可能的异常。Unchecked Exceptions指的是被程序员check的异常,Checked Exceptions指的是被编译器check的异常。

Throwable下面有两个子类,分别为Error和Exception,其中所有的Error类和Exception类中的RuntimeException类都属于Unchecked异常,其余都属于Checked异常。

二、处理机制

Checked Exceptions可能会发生的地方,编译器会强制要求你要么处理这个异常(try catch块进行处理),要么在这个方法的头部声明这个方法可能会抛出一个异常,对调用这个方法的方法做一个警告,要求调用者来处理这个异常(throws声明)。

Unchecked Exceptions可能会发生的地方,编译器无法预见,因此不要求做任何处理。

一般来说,Checked Exceptions常常是可以捕获捕获并处理的,往往由与客户端的不正确调用引起,捕获异常并处理可以给用户提供一次改正的机会,提高程序的健壮性。例如:用户指定打开文件路径的文件并不存在,因此可以捕获这个异常,做一个提示,并让用户可以重新选择路径。Unchecked Exceptions一般捕获后没有什么价值的,其包含的Error属于系统的内部错误,是由于设备错误,物理限制,内存不足,JVM发生内部错误,不兼容等等原因导致的,因此捕获后没有什么处理价值。另一种RuntimeException则是由于程序员本身代码有错误,发生除零错误,空指针异常,数组越界等等,这种纯粹属于程序员写代码时的失误引起,需要改变程序,因此捕获的价值很低,重写代码找出bug即可。

Checked异常

Checked异常是Exception类的子类中除去运行时异常的所有其他异常类,如IO异常,这类异常必须被捕获并进行处理否则编译就无法通过,异常被捕获之后需要进入异常处理,可以通过thorws、throw、try catch和finall来进行:

  • throws:声明本方法可能会发生xx异常;
  • throw:抛出xx异常;
  • try catch、 finally:捕获并处理异常。

Unchecked异常

Unchecked异常包括运行时异常和Error,由于运行时异常和Error异常都是在编译阶段无法发现的,只有程序运行时才能发现的异常,所以编译器在编译时无法对其进行检查,这类异常是不需要在编译的时候用try catch、throws等机制来处理的,编译可以通过,执行时如果出现就直接导致程序失败;其中典型的运行时异常有空指针、数组访问越界等,通常是程序的逻辑错误引起的。

三、Checked exception、Unchecked exception二者对比

Checked exception Unchecked exception
基本区别 必须被显示地捕获或者传递,否则编译无法通过 异常可以不被捕获或抛出,编译器不检查
分类 继承自Exception类,除了运行时异常其他的子类 运行时异常及其子类,Error类
处理策略 从异常发生的现场获取详细的信息,
利用 异常返回的信息来明确操作失
败的原因, 并加以合理的恢复处理
简单打印异常信息,无法再继续处理
表示 代码看起来较复杂 简单清晰

Checked exception及Unchecked exception对比相关推荐

  1. 通俗理解checked Exception和unchecked Exception

    首先放一张Java异常层次结构图: 错误(Error)和异常(Exception)是不同的. Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题.大多数错误与代码编写者执行的操作无 ...

  2. checked exception和unchecked exception区别

    http://blog.csdn.net/yuefengyuan/article/details/6204317 一. Java 中定义了两类异常: 1) Checked exception: 这类异 ...

  3. Java异常:选择Checked Exception还是Unchecked Exception?

    Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和unchecked异常之间的区别是: Checked异常必须被显式地捕获或者传递,如B ...

  4. [转载] Java异常:选择Checked Exception还是Unchecked Exception?

    参考链接: Java中的已检查与未检查异常| checked或unchecked异常 Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和 ...

  5. 检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)

    检查型异常(Checked Exception)与非检查型异常(Unchecked Exception) 参考文章: (1)检查型异常(Checked Exception)与非检查型异常(Unchec ...

  6. Checked异常和Unchecked异常

    1,异常分类 从异常处理机制的角度可以分为两类,Unchecked Exceptions和Checked Exceptions.Unchecked Exceptions指的是被程序员check的异常, ...

  7. java 判断exception类型_Checked Exception | Java语言设计者的失误?

    背景 最近公司一直在执行sonar扫描代码bug.漏洞及异味,但发现了很对异常处理的问题,大多数是对Java异常处理不正确导致的,那本文就谈谈Java的异常是什么?设计者的初衷又是什么? Except ...

  8. 记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure]

    记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure] 参考文章: (1)记一次Jenkins 打包 ...

  9. Jenkins发版常见问题:ERROR: Exception when publishing, exception message [Failure]

    Jenkins 报错日志: ERROR: Exception when publishing, exception message [Failure] Build step 'Send build a ...

最新文章

  1. 图解|打工人看腾讯这道多线程面试题
  2. MyBatis包含这9种设计模式,你知道几个?
  3. win服务器系统程序原因
  4. 作为大数据和云计算学习的一个序吧
  5. boost::allocate_shared相关的测试程序
  6. solidworks图纸模板添加_Solidworks零件和图纸绘制流程分享
  7. spring boot jar包_「Spring Boot 新特性」 jar 大小自动瘦身
  8. [HEOI2016/TJOI2016]字符串 (后缀数组+主席树+二分)
  9. C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)
  10. 软件测试之python面试题_常见Python面试题整理带答案
  11. 商城项目面试问题整理
  12. 读《计算机网络》——深入浅出——以考研为目标学技术面试知识二刷计网——计算机网络体系结构
  13. elasticsearch 深入 —— 地理位置
  14. 【论文解读】Stacked Hourglass Networks
  15. 关于PoE供电,你想知道的这里都有
  16. 【49.Auth2.0认证与授权过程-微博开放平台认证授权过程-百度开放平台认证授权过程-社交登录实现(微博授权)-分布式Session问题与解决方案-SpringSession整合-Redis】
  17. Could not find a getter for name in class org.tarena.entity1.City
  18. 更换openstack虚拟机ip
  19. win7中USB音箱没有声音解决办法
  20. Android Verified Boot dm-verity 优化和实战

热门文章

  1. The requested resource (Servlet action is not available) is not available.这个问题让我通宵了一个晚上
  2. Http? Https?
  3. luoguP1888 【三角函数】
  4. Docker 教程:如何将Helix QAC作为容器创建并运行 下
  5. 汽车/车载/自动驾驶/辅助驾驶相关认知记录
  6. input框点击时去掉默认的外层边框
  7. Linux的DNS正向解析和转发配置
  8. Android系统的VTS测试套件介绍
  9. DDK for windows
  10. 这 7 款程序员免费在线画图工具,贼好用!