Java运行时异常和编译时异常如何区分_Java异常分类详解

发布时间 - 2026-01-03 00:00:00    点击率:
Java中运行时异常继承自RuntimeException且编译通过,编译时异常继承自Exception但非RuntimeException子类且编译报错;前者反映逻辑缺陷,后者应对环境不确定性。

Java中区分运行时异常和编译时异常,核心就看两点:是否继承自 RuntimeException,以及编译器会不会在写代码时就报错。

看继承关系:是不是 RuntimeException 的后代

这是最本质的判断依据:

  • 如果一个异常类直接或间接继承自 RuntimeException(比如 NullPointerExceptionArrayIndexOutOfBoundsExceptionArithmeticException),它就是运行时异常
  • 如果它继承自 Exception,但没有继承 RuntimeException(比如 IOExceptionSQLExceptionClassNotFoundException),它就是编译时异常

看编译阶段:IDE 或 javac 会不会拦着你

这是最直观的区分方式:

  • 编译时异常:你在 IDEA 里写完代码还没运行,编辑器就标红报错,提示“Unhandled exception”,不加 try-catchthrows 就无法通过编译;
  • 运行时异常:代码能顺利编译通过,但一运行就可能崩溃——比如访问 null 对象的方法、数组下标越界、除以零,这些错误只在 JVM 执行到那行时才暴露。

看设计意图:该不该强制程序员处理

这反映了 Java 异常机制的设计哲学:

立即学习“Java免费学习笔记(深入)”;

  • 编译时异常代表外部可变因素引发的问题,比如文件是否存在、网络是否通畅、数据库连接是否有效。这些不是代码逻辑缺陷,而是程序运行环境带来的不确定性,所以编译器强制你提前考虑并应对;
  • 运行时异常大多源于代码逻辑疏漏,比如没判空就调用方法、没校验参数范围就做运算。这类问题本应由开发阶段发现并修复,而不是靠异常处理掩盖,因此编译器不做强制要求。

注意两个常见误区

避免混淆概念:

  • 语法错误不是异常:比如少个分号、括号不匹配,属于编译失败(compile error),不属于任何异常体系;
  • Error 不是异常:像 OutOfMemoryErrorStackOverflowErrorThrowable 的子类,但属于系统级严重错误,程序通常无法恢复,也不归入“异常处理”的讨论范畴。


# java  # idea  # java异常  # overflow 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 装修招标网站设计制作流程,装修招标流程?  西安专业网站制作公司有哪些,陕西省建行官方网站?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel如何使用模型观察者?(Observer代码示例)  Laravel如何处理CORS跨域请求?(配置示例)  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  深圳网站制作的公司有哪些,dido官方网站?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  如何在阿里云通过域名搭建网站?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  php json中文编码为null的解决办法  Android Socket接口实现即时通讯实例代码  微信小程序 五星评分(包括半颗星评分)实例代码  如何在宝塔面板创建新站点?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  在线制作视频网站免费,都有哪些好的动漫网站?  如何快速查询网址的建站时间与历史轨迹?  如何在IIS中新建站点并解决端口绑定冲突?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  C#如何调用原生C++ COM对象详解  JS中对数组元素进行增删改移的方法总结  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Laravel怎么使用artisan命令缓存配置和视图  想要更高端的建设网站,这些原则一定要坚持!  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  如何快速配置高效服务器建站软件?  高防服务器租用指南:配置选择与快速部署攻略  Python进程池调度策略_任务分发说明【指导】  图册素材网站设计制作软件,图册的导出方式有几种?  b2c电商网站制作流程,b2c水平综合的电商平台?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  详解Android图表 MPAndroidChart折线图  html如何与html链接_实现多个HTML页面互相链接【互相】  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Python3.6正式版新特性预览  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  原生JS实现图片轮播切换效果  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何在IIS中新建站点并配置端口与物理路径?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  如何在VPS电脑上快速搭建网站?  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  如何用搬瓦工VPS快速搭建个人网站?