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

Jova笔记

Java博客:一文搞懂Java异常机制,告别空指针崩溃
标签
#Java #Java基础 #异常处理 #编程避坑
前言
写Java代码时,大家几乎都遇到过程序突然停止、控制台抛出红色报错,其中最常见的就是NullPointerException空指针异常。很多新手只会简单加try-catch包裹,却分不清异常和错误、受检异常与运行时异常的区别。本文结合实战代码梳理Java完整异常体系,讲清正确处理方式与开发规范,适合入门巩固、面试复习。
一、什么是异常?
异常是程序运行时出现的非正常情况,会打断正常执行流程。Java把所有异常/错误封装成类,统一继承顶层父类Throwable,分为两大分支:
Error(错误):系统级严重故障,代码无法捕获处理
例:StackOverflowError栈溢出、OutOfMemoryError内存溢出,只能优化代码、调整JVM参数规避。
Exception(异常):业务逻辑可预见问题,支持捕获、修复
受检异常(Checked Exception):编译强制处理,不捕获直接报错,如IO读写、文件不存在
运行时异常(RuntimeException):编译不校验,运行才报错,大多是代码书写问题,空指针、数组越界、类型强转失败都属于此类
二、核心关键字:try-catch-finally、throw、throws
1. try-catch-finally 基础结构
try包裹可能出错代码;catch捕获对应异常并处理;finally无论是否报错都会执行,常用于关闭流、释放资源。
public class ExceptionTest {
public static void main(String[] args) {
String str = null;
try {
System.out.println(str.length());
} catch (NullPointerException e) {
// 打印异常堆栈,定位报错位置
e.printStackTrace();
System.out.println("变量为空,执行兜底逻辑");
} finally {
System.out.println("代码执行完毕,释放资源");
}
}
}
2. throws 声明抛出异常
方法自身不处理异常,交给调用方捕获,多用于工具类、IO操作。
// 声明可能抛出文件不存在异常
public static void readFile() throws FileNotFoundException {
FileInputStream fis = new FileInputStream("test.txt");
}
3. throw 手动抛出异常
主动制造异常中断流程,多用于参数校验。
public static void checkAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年龄不能为负数");
}
}
三、高频异常踩坑总结
NullPointerException 空指针
对象未初始化直接调用方法,解决方案:提前判空、使用Optional优雅处理。
ArrayIndexOutOfBoundsException 数组越界
访问下标超出数组长度,遍历前校验数组长度。
ClassCastException 类型转换异常
强转前先用instanceof判断类型。
ArithmeticException 算术异常
除数为0,除法前判断分母是否为0。
四、企业开发规范(避坑重点)
禁止空catch块,捕获异常必须打印日志或兜底处理,否则问题隐藏难以排查;
细分异常类型,不要直接捕获顶级Exception,避免掩盖未知错误;
资源关闭优先使用try-with-resources,自动关闭IO流、连接,简化finally代码;
// 自动关闭流,无需手动close
try (FileInputStream fis = new FileInputStream("test.txt")) {
byte[] buf = new byte[1024];
fis.read(buf);
} catch (IOException e) {
e.printStackTrace();
}
自定义业务异常,区分系统异常与业务报错,方便接口统

http://www.gsyq.cn/news/1548103.html

相关文章:

  • 企业AI应用密钥统一管理:基于Taotoken的实践指南
  • uv、pip和venv三者之间的关系
  • CodeWarrior DSP56800E目标设置全解析:从编译优化到调试配置
  • 2026年豫北制造业与外贸企业数字化转型必读:短视频代运营+GEO推广+独立站推广完整破局指南 - 年度推荐企业名录
  • AI编程工具vibe coding体验对比
  • 构建高性能指纹浏览器 RPC 桥梁:宿主机与浏览器页面之间的极速通信通道
  • 如何高效解锁中兴光猫:zteOnu专业级配置实战指南
  • 2026年上海房屋漏水怎么办?卫生间、屋顶、外墙全场景防水补漏避坑指南 - 优质企业观察收录
  • APK-Installer:Windows平台安卓应用安装的3分钟终极解决方案
  • Temporal 服务器源码架构分析
  • Android AlarmManager - AlarmManager 初识、精确闹钟权限、闹钟覆盖
  • 3个颠覆性功能:重新定义你的音频创作体验
  • VALMET ND9106HX8T 阀门定位器实战应用与故障排查指南
  • 终极宝可梦合法性解决方案:PKHeX自动合规插件完全指南
  • 无锡视频拍摄公司排行:基于服务与案例的客观盘点 - 起跑123
  • 【多智能体控制】基于预定时间非干扰形成控制开放多智能体系统Matlab仿真
  • 2026年上海防水补漏服务商全景评测:从AI漏点检测到15年质保的完整选型指南 - 优质企业观察收录
  • 胶东机场至诸城拼车发车机制及服务细节全解析 - 起跑123
  • FrogMouth:一款用户友好型MarkDown阅读器
  • 换发型不伤发!武汉三星速美假发超市线下探店实测 - 行业深度观察C
  • 2026年供应商交期反复延迟,采购人员学习众智商学院SCMP前怎么复盘交付管理问题? - 众智商学院职业教育
  • 语言贬低式家庭教育对儿童人格发展的负面影响及正向教养路径探析
  • 新疆旅游季节和路线选择参考 - 盛世西域旅行
  • 2026 京东 e 卡回收实操教程,闲置礼品卡安全变现指南 - 京卡收卡券回收
  • OCAT终极指南:3步搞定OpenCore黑苹果配置,告别复杂XML编辑
  • AI生活化应用设计:从技术能力到温情体验的产品化思考
  • 2026年上海防水补漏服务商选型指南:从漏点诊断到15年质保的完整避坑手册 - 优质企业观察收录
  • 为什么选数控弯箍机不能只看榜单附6维选型法 + 源头工厂实测 - 资讯快报
  • 全球Token降价潮启动:AI大模型API价格雪崩,最高降幅达99%
  • 丽水GEO城市合伙人选型推荐哪家靠谱:源头厂商、合伙人权益与区域保护怎么选? - 小随科技