论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Java中编译期异常和运行期异常的区别
Java中编译期异常和运行期异常的区别
刘俊凯
论坛元老
|
2025-2-22 18:02:40
|
显示全部楼层
|
阅读模式
楼主
主题
1934
|
帖子
1934
|
积分
5806
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
在Java中,异常分为
运行期异常(Runtime Exception)
和
编译期异常(Checked Exception)
,两者的核心区别在于
编译器是否欺压要求处理
。以下是它们的具体对比:
1. 定义与分类
类别
运行期异常(Runtime Exception)
编译期异常(Checked Exception)
继承关系
继承自 RuntimeException(属于Unchecked Exception)直接继承自 Exception(但不继承RuntimeException)
处理要求
不欺压处理
(编译器不查抄)
必须显式处理
(捕获或抛出,否则编译报错)
计划意图
表示程序逻辑错误或不可控的运行时标题(如空指针、数组越界)表示可预见的、需要程序主动处理的异常(如文件不存在、网络停止)
2. 常见示例
运行期异常
编译期异常
NullPointerExceptionIOExceptionArrayIndexOutOfBoundsExceptionSQLExceptionClassCastExceptionFileNotFoundExceptionArithmeticException(除零错误)InterruptedException
3. 处理方式对比
(1) 运行期异常(Runtime Exception)
无需欺压处理
,但建议在代码中主动避免或捕获。
如果未处理,异常会向上传播,最终导致程序瓦解。
典型场景
:
// 示例:可能抛出NullPointerException
String str = null;
System.out.println(str.length()); // 运行时抛出异常
复制代码
(2) 编译期异常(Checked Exception)
必须显式处理
(否则编译失败)。
两种处理方式
:
捕获异常
(try-catch)
声明抛出
(throws)
// 示例:必须处理IOException(编译期检查)
public void readFile() throws IOException { // 方式1:声明抛出
FileReader file = new FileReader("test.txt");
}
// 或
public void readFile() {
try {
FileReader file = new FileReader("test.txt");
} catch (IOException e) { // 方式2:捕获处理
e.printStackTrace();
}
}
复制代码
4. 核心区别总结
对比维度
运行期异常
编译期异常
处理欺压力
不欺压处理(程序员自行决定是否处理)必须处理(否则编译失败)
错误类型
程序逻辑错误或不可控的运行时标题外部依赖导致的、可预见的异常
代码结实性
依赖程序员主动预防(如判空、校验参数)欺压程序员处理潜伏标题
典型修复方式
通过代码逻辑修复(如避免空指针、数组越界)通过异常处理或资源管理(如重试、关闭毗连)
5. 为什么如许计划?
运行期异常
:
通常由程序逻辑错误引起(如空指针、除零错误),属于开发者应主动避免的标题。编译器不欺压处理,避免代码冗余。
编译期异常
:
表示程序依赖的外部环境可能发生的标题(如文件不存在、网络停止)。欺压处理是为了让开发者明白应对这些可预见的异常,提拔代码可靠性。
6. 实际开发中的建议
运行期异常
:
通过代码逻辑避免(如判空、校验数组索引)。
在关键位置捕获处理(如框架层统一处理)。
编译期异常
:
优先明白处理(如重试文件读取)。
如果无法处理,可向上抛出并记录日志。
自定义异常
:
业务错误通常定义为RuntimeException(避免欺压调用方处理)。
需要调用方主动处理的异常定义为Checked Exception。
一句话总结
运行期异常
:程序员的锅,编译器不欺压背锅。
编译期异常:
调用方的锅,编译器要求必须背锅!-
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
刘俊凯
论坛元老
这个人很懒什么都没写!
楼主热帖
牛客SQL刷题第三趴——SQL大厂面试真题 ...
IDEA中集成Git操作以及关于Git中分支说 ...
MySQL ——select语句 一条龙服务 ...
Bug驱动开发探讨
github上fork2.4k,star8.7k的这款状态 ...
SAP MM 使用两个STO实现免关税跨国公 ...
哈工大信息安全概论期末复习 ...
袋鼠云春季生长大会最新议程来啦!4月2 ...
万字解析XML配置映射为BeanDefinition ...
事务
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表