博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CheckException和RuntimeException
阅读量:6700 次
发布时间:2019-06-25

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

java文档中对RuntimeException的定义是:

RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

 

java中Exception分为两类,一类是CheckException一类是UncheckException。并且java的Error都属于UncheckedException。

一、CheckException和UnCheckException的区别:

  1、在编译的时候,java编译器会强制你处理CheckException,处理的方式有两种:一种是抛出异常;另一种是捕获异常(常见的有ClassNotFoundException等)。而对于UncheckException编译去则不需要你做任何处理,只是在运行时出现了该类异常,则会被抛出(常见的有:NullPointException,ArrayIndexOutofBoundException等)。

  2、Checked exception用来指示一种调用方能够直接处理的异常情况。而Runtime exception则用来指示一种调用方本身无法处理或恢复的程序错误。

 

二、是否应该对RuntimeException处理

总而言之,在程序的运行过程中一个checked exception被抛出的时候,只有能够适当处理这个异常的调用方才应该用try/catch来捕获它。而对于runtime exception,则不应当在程序中捕获它。如果你要捕获它的话,你就会冒这样一个风险:程序代码的错误(bug)被掩盖在运行当中无法被察觉。因为在 程序测试过程中,系统打印出来的调用堆栈路径(StackTrace)往往使你更快找到并修改代码中的错误。有些程序员建议捕获runtime exception并纪录在log中,我反对这样做。这样做的坏处是你必须通过浏览log来找出问题,而用来测试程序的测试系统(比如Unit Test)却无法直接捕获问题并报告出来。

  在程序中捕获runtime exception还会带来更多的问题:要捕获哪些runtime exception?什么时候捕获?runtime exception是不需要声明的,你怎样知道有没有runtime exception要捕获?你想看到在程序中每一次调用方法时,都使用try/catch程序块吗?

转载于:https://www.cnblogs.com/fsh1542115262/p/3933712.html

你可能感兴趣的文章
第 3 章 镜像 - 018 - 镜像命名的最佳实践
查看>>
寒假自助游之济南
查看>>
chmod的理解
查看>>
记一次phpstudy重启后Apache无法启动
查看>>
JavaScript强化教程 —— Cocos2d-JS极速调试技巧
查看>>
shell统计指定目录下所有文件类型及数量
查看>>
块级元素的margin-left和margin-right的用法注意
查看>>
学好Linux决心书
查看>>
Linux SSH远程管理故障如何排查?
查看>>
Centos7.0 搭建Zabbix环境
查看>>
Showdoc 搭建项目 API 文档系统
查看>>
老男孩36期运维脱产班---- 决心书
查看>>
性能优化之NSDateFormatter
查看>>
HTML块级元素
查看>>
树莓派基金会来号召用键盘生物学家研究企鹅
查看>>
Linux内核的裁剪和移植
查看>>
MySQL数据库(二)
查看>>
学习笔记(11月08日)--异常
查看>>
禅道8.2-9.2.1注入GetShell
查看>>
windows7下安装php的imagick和imagemagick扩展教程
查看>>