当前位置: 首页 > news >正文

Java 异常处理机制(异常分类、try-catch、自定义异常)

一、前言

程序运行时出现的非语法错误(空指针、数组越界、除数为 0)统称为异常。如果不处理,程序会直接终止、崩溃。Java 提供了完善的异常处理机制,保证程序健壮性,是课程作业必考知识点。

二、异常的分类

1. 编译时异常(受检异常)

必须处理,否则代码报错 例:文件读写异常、日期解析异常

2. 运行时异常(非受检异常)

运行时才报错,编译不报错 例:空指针、数组越界、除数为 0

3. 错误 Error

系统级严重问题,程序无法处理

三、异常处理四大关键字

  • try:包裹可能出错的代码
  • catch:捕获并处理异常
  • finally:无论是否异常,一定执行(释放资源)
  • throws:抛出异常,交给上层处理

四、标准 try-catch-finally 示例

java

运行

public class ExceptionDemo { public static void main(String[] args) { try { int a = 10 / 0; // 除数为0异常 } catch (ArithmeticException e) { System.out.println("算术异常:除数不能为0"); } finally { System.out.println("代码执行完毕,无论是否报错都会执行"); } } }

五、throws 抛出异常

适用于:自己不想处理,交给调用者处理

java

运行

public class ThrowsDemo { public static void test() throws Exception{ int[] arr = {1,2,3}; System.out.println(arr[10]); } public static void main(String[] args) throws Exception { test(); } }

六、常用运行时异常

  • NullPointerException空指针异常
  • ArrayIndexOutOfBoundsException数组下标越界
  • ArithmeticException算术异常
  • ClassCastException类型转换异常

七、自定义异常(作业高频)

当系统自带异常不满足业务需求时,自定义业务异常:

java

运行

// 自定义异常类 class AgeException extends RuntimeException{ public AgeException(String msg){ super(msg); } } public class CustomException { public static void checkAge(int age){ if(age < 0 || age > 150){ throw new AgeException("年龄不合法!"); } } public static void main(String[] args) { checkAge(200); } }

八、总结

  1. 异常分为编译时异常、运行时异常、错误
  2. try-catch捕获处理异常,防止程序崩溃;
  3. finally用于资源释放;
  4. throws向上抛出异常;
  5. 自定义异常可以实现业务规则校验,让程序更规范健壮。
http://www.jsqmd.com/news/971771/

相关文章:

  • 鸿蒙原生应用进阶:全面彻底吃透 Scroll 与 NestedScroll 嵌套滚动机制及滑动冲突解决方案
  • 打破数据孤岛:基于Apache SeaTunnel的异构数据源实时同步架构设计与实战
  • C语言指针之二malloc的用法及详解
  • PXA255嵌入式系统CF卡启动专用EBOOT源码包(含完整驱动与编译脚本)
  • chroot-debian一键部署
  • 从JavaScript的0.1+0.2≠0.3说起:手把手图解IEEE754舍入模式与精度陷阱
  • 面试题完结 | 投票题 + 到岗时间 + 压力缓解
  • 从‘极值理论’到‘开集识别’:一篇讲透OpenMax背后的数学原理与工程实现
  • 2026年北京离婚律师实力对比 5位深耕家事各有专长 - 本地品牌推荐
  • 2026年台州代理记账选对助企业行稳致远 蓝图财税专业推荐 - 本地品牌推荐
  • AI写作辅助网站的合规使用指南:如何让AI生成内容通过严格学术审查
  • 量子测量中的上下文无关性与相空间重构技术
  • 变身大冒险:从“半成品代码“到“电脑悄悄话“的神奇变身术
  • 高校外聘教师信息登记与课时工资自动核算桌面工具(C# + SQL Server)
  • 2026年佛山知识产权律师推荐怎么选?看这五个关键点 - 本地品牌推荐
  • 别再死记硬背了!用这5个真实项目案例,帮你彻底搞懂软件工程导论核心概念
  • MixIO vs Blynk/MQTT:一个更适合Mixly用户的物联网平台选择?
  • 拆解5G基站RRU:FPGA里到底塞了哪些模块?从DUC到DPD,一张图讲清楚
  • 告别臃肿客户端:用Oracle Instant Client + Navicat 16 轻量连接远程数据库
  • 职场录音转写工具投入产出比实测:随身鹿、通义听悟、阿里云与Trint该怎么选?
  • 外贸B2B建站系统推荐:2026年最新测评
  • 别再死记硬背了!用Arduino框架和Adafruit库5分钟搞定ESP32的I2C通讯
  • 阿贝云服务器挖矿程序攻击预防与处理实用心得
  • 抖音批量下载终极指南:免费开源工具助你高效管理视频素材
  • 从ZLToolKit线程模块看C++高性能网络库设计:任务队列、线程池与负载均衡的实战拆解
  • ESP32项目美化:用Img2Lcd和PCtoLCD给你的OLED屏加上Logo和图片(含省内存技巧)
  • 金融行业会议转写防坑指南:夸克、讯飞、随身鹿真实对比
  • JVM 性能调优与线上问题定位方法论
  • 终极指南:3分钟为网易云音乐安装BetterNCM插件管理器
  • 6.5 BGP策略实验作业