Checked exception及Unchecked exception对比
一、异常分类
从异常处理机制的角度可以分为两类,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对比相关推荐
- 通俗理解checked Exception和unchecked Exception
首先放一张Java异常层次结构图: 错误(Error)和异常(Exception)是不同的. Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题.大多数错误与代码编写者执行的操作无 ...
- checked exception和unchecked exception区别
http://blog.csdn.net/yuefengyuan/article/details/6204317 一. Java 中定义了两类异常: 1) Checked exception: 这类异 ...
- Java异常:选择Checked Exception还是Unchecked Exception?
Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和unchecked异常之间的区别是: Checked异常必须被显式地捕获或者传递,如B ...
- [转载] Java异常:选择Checked Exception还是Unchecked Exception?
参考链接: Java中的已检查与未检查异常| checked或unchecked异常 Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和 ...
- 检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)
检查型异常(Checked Exception)与非检查型异常(Unchecked Exception) 参考文章: (1)检查型异常(Checked Exception)与非检查型异常(Unchec ...
- Checked异常和Unchecked异常
1,异常分类 从异常处理机制的角度可以分为两类,Unchecked Exceptions和Checked Exceptions.Unchecked Exceptions指的是被程序员check的异常, ...
- java 判断exception类型_Checked Exception | Java语言设计者的失误?
背景 最近公司一直在执行sonar扫描代码bug.漏洞及异味,但发现了很对异常处理的问题,大多数是对Java异常处理不正确导致的,那本文就谈谈Java的异常是什么?设计者的初衷又是什么? Except ...
- 记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure]
记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure] 参考文章: (1)记一次Jenkins 打包 ...
- Jenkins发版常见问题:ERROR: Exception when publishing, exception message [Failure]
Jenkins 报错日志: ERROR: Exception when publishing, exception message [Failure] Build step 'Send build a ...
最新文章
- 图解|打工人看腾讯这道多线程面试题
- MyBatis包含这9种设计模式,你知道几个?
- win服务器系统程序原因
- 作为大数据和云计算学习的一个序吧
- boost::allocate_shared相关的测试程序
- solidworks图纸模板添加_Solidworks零件和图纸绘制流程分享
- spring boot jar包_「Spring Boot 新特性」 jar 大小自动瘦身
- [HEOI2016/TJOI2016]字符串 (后缀数组+主席树+二分)
- C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)
- 软件测试之python面试题_常见Python面试题整理带答案
- 商城项目面试问题整理
- 读《计算机网络》——深入浅出——以考研为目标学技术面试知识二刷计网——计算机网络体系结构
- elasticsearch 深入 —— 地理位置
- 【论文解读】Stacked Hourglass Networks
- 关于PoE供电,你想知道的这里都有
- 【49.Auth2.0认证与授权过程-微博开放平台认证授权过程-百度开放平台认证授权过程-社交登录实现(微博授权)-分布式Session问题与解决方案-SpringSession整合-Redis】
- Could not find a getter for name in class org.tarena.entity1.City
- 更换openstack虚拟机ip
- win7中USB音箱没有声音解决办法
- Android Verified Boot dm-verity 优化和实战
热门文章
- The requested resource (Servlet action is not available) is not available.这个问题让我通宵了一个晚上
- Http? Https?
- luoguP1888 【三角函数】
- Docker 教程:如何将Helix QAC作为容器创建并运行 下
- 汽车/车载/自动驾驶/辅助驾驶相关认知记录
- input框点击时去掉默认的外层边框
- Linux的DNS正向解析和转发配置
- Android系统的VTS测试套件介绍
- DDK for windows
- 这 7 款程序员免费在线画图工具,贼好用!