Exception和RuntimeException的区别
来源:互联网 发布:速记用什么软件 编辑:程序博客网 时间:2024/06/05 12:39
之所以区分 checked/unchecked exception,Java的设计思想是区分从类/方法设计者角度来看两种不同的异常:
一种是设计者认为这个方法在使用过程中使用者能够处理的异常,这些往往作为checked exception。比如一个IO系统的设计者会认为诸如物理文件不存在或者介质无法读取等异常时很可能发生,而使用者完全可能捕获这个异常,通过让用户重新输入文件名等方式重新进行这个操作,也就是说,这是一个可恢复的操作。所以我会在诸如 read()/write()等操作中throw 一个 IOException(checked exception)。
第二种是设计者认为使用者不能够处理的异常,比如我写一个函数要求传入的参数是个正数,那么当我发现使用者传了个负数进来时,合理的预期是程序中出bug了。如果我抛出一个异常描述这件事,即使我要求调用者捕获这个异常,他肯定也不知道该怎么办(总不能随便传一个正数进来吧)。这时候我就会抛出一个IllegalArgumentException(uncheck exception),这里面的潜台词是:小子,我知道你也是帮人背黑锅的,处理不了这个,你还是交给你的领导(调用你的程序)去处理这个异常吧。
从这里可以看出,checked exception和 unchecked exception的根本区别在于设计者认为使用者是否能够并且应该处理这个异常。不幸的是,由于Java使用者水平的参差不齐,大量的unchecked exception该被设计成了checked exception,而对于真正的checked exception,又有太多被catch了之后啥都不作就悄无声息了。尤其是不声不响吞噬exception的行为,不但达不到设计者本来的要求(进行恢复处理),甚至问题更大(连 unchecked exception那种最后报错的效果都没了)。
- Exception和RuntimeException的区别
- Exception和RuntimeException的区别
- RuntimeException和Exception区别
- RuntimeException和Exception区别
- RuntimeException和Exception区别
- RuntimeException和Exception区别
- RuntimeException和Exception区别
- RuntimeException和Exception区别
- Error和Exception、RuntimeException和非RuntimeException的区别
- Exception类和RuntimeException类的区别
- Java中RuntimeException和Exception的区别
- java exception 和 runtimeException的区别
- Java中RuntimeException和Exception的区别
- Exception和继承自Exception的RuntimeException有什么区别
- Exception和继承自Exception的RuntimeException区别
- error和exception的区别,RuntimeException和非RuntimeException的区别
- error和exception的区别,RuntimeException和非RuntimeException的区别
- error和exception的区别,RuntimeException和非RuntimeException的区别
- mysql5启动报错:本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- Android 基于 Speex 的高度封装语音库,0 耦合,没三方jar包
- 四大内置核心函数式接口
- 概率dp 入门
- Exception和RuntimeException的区别
- 深入理解findViewById原理
- 《统计学习方法》笔记08:boosting(1)
- CentOS7安装JDK1.8
- ++在前和++在后
- python实现对矩阵按照行、列求和,不使用numpy、pandas模块
- CentOS 6.9系统下Docker的安装配置详解
- volatile 关键字
- Android小问题的处理