为什么有些异常throw出去需要在函数头用throws声明,一些就不用
2024-08-31 02:05:24
throw new IllegalStateException(".");
不用在函数头声明throws IllegalStateException
throw new IOException(".");
不声明throws编译不通过
不用在函数头声明throws IllegalStateException
throw new IOException(".");
不声明throws编译不通过
两种情况
1、Integer.parseInt("1");这个java.lang包里面的方法,有throws NumberFormatException,但我调用的时候不用catch
2、
public final DefaultIoFilterChainBuilder getFilterChain() {
throw new IllegalStateException(
"Current filter chain builder is not a DefaultIoFilterChainBuilder.");
}
这个方法,我不用声明throws照样可以编译通过
所谓checked exception和runtime exception checked exception告知外部用户此方法在某些情况下可能抛出这个错误,你应该捕获并处理错误以便程序在可能的情况下能够继续运行下去(当然你也可以通过throws声明将异常再往上层暴露,但终究有一层是要去catch这个异常的)。这些错误往往是可预期而且可以作为异常流来处理的。checked exception作为语法上的一种强制措施让你在代码编译阶段就必须对异常进行处理。 比如IOException,当你打开、读取、写入文件时可能抛出这个错。你可以捕获并提示最终用户『文件操作失败,请重试』等信息,而不是任由它抛到JVM中导致当前线程挂掉。 而runtime exception可能产生于运行时的一些不可预知的时刻,而且往往产生后没有有效的手段处理,因此不需要强制对其进行声明和捕获。 你可以认为checked exception就是要强制你去处理这个异常(不管你throws多少层,你终归要在某个地方catch它);而runtime exception则没有这个限制,你可以自由选择是否catch。 https://zhidao.baidu.com/question/519014936.html
最新文章
- 《Entity Framework 6 Recipes》中文翻译系列 (18) -----第三章 查询之结果集扁平化和多属性分组
- new 与 malloc 的区别
- 虚拟机拷贝后网卡eth0变成了eth1的解决办法
- WampServer3.0.4 允许外网访问配置教程
- PhoneGap在iOS开发下的注意事项
- 由 excel 转换为 markdown,及收获
- jenkins+jmeter+ant搭建接口测试平台
- python学习笔记三 函数(基础篇)
- PhoneGap插件开发流程
- Android Service实时向Activity传递数据
- getBoundingClientRect()兼容性处理
- js原型解析
- .NET基础拾遗(7)多线程开发基础1
- ARM 汇编器对C的扩展
- 查看Python、flask 版本
- Python-查找两个文件中相同的ip地址
- html5-表单的综合实例
- python基础笔记之面向对象
- Linux常用命令之sed(2)
- 赵雅智_ListView_ArrayAdapter
热门文章
- 【转】java中Thread类方法介绍
- Hibernate插入错误:GenericJDBCException: could not insert:
- DIY.NETORM框架——总体分析
- openCV—Python(2)——	载入、显示和保存图像
- Python科学计算的瑞士军刀——Anaconda 安装与配置
- 创业公司十分钟简单搭建GIT私有库
- javascript 和 CoffeeScript 里的类
- android TabHost控件
- Android 体系结构介绍
- 开发PL/SQL子程序和包及使用PL/SQL编写触发器、在JDBC中应用Oracle