Java 学习复盘:异常处理详解
哈喽各位 CSDN 小伙伴前面学完了面向对象、抽象类与接口今天继续记录 Java 的异常知识点。写代码的时候总会遇到各种各样报错有些是语法写错编译直接报错还有一类是程序运行起来之后才出现的错误比如空指针、数组越界。这就是 Java 里的异常。异常处理就是用来优雅捕获、处理运行时错误防止整个程序直接崩溃退出也是项目开发里必备的能力。一、什么是异常异常 程序运行过程中发生的非正常情况。区分两个概念错误 (Error)属于严重系统级问题比如内存溢出程序无法处理。异常 (Exception)代码运行产生的可处理问题我们可以使用异常机制捕获处理。Java 中异常体系顶层父类ThrowableError系统错误不处理Exception异常分为两大类编译期异常受检异常除RuntimeException以外的异常。编译器强制要求处理不写处理代码就编译报错。运行时异常非受检异常RuntimeException编译不会报错运行才抛出。比如空指针NullPointerException、数组索引越界ArrayIndexOutOfBoundsException。代码书写规范可以尽量避免。二、异常的捕获try-catch-finally语法try{// 可能会出现异常的代码}catch(异常类型 e){// 捕获到对应异常后执行的处理逻辑}finally{// 无论是否发生异常最后一定会执行除非JVM直接退出}执行流程try 里面代码正常执行如果没有异常try 执行完毕跳过 catch执行 finally。try 里面代码抛出异常异常后面的代码不会执行直接跳转到匹配的 catch 块执行再执行 finally。多 catch 写法捕获多种不同异常从小到大写子类异常写前面父类异常放后面publicclassExceptionDemo{publicstaticvoidmain(String[]args){try{int[]arr{1,2,3};System.out.println(arr[10]);}catch(ArrayIndexOutOfBoundsExceptione){System.out.println(数组下标越界);}catch(Exceptione){System.out.println(出现未知异常);}finally{System.out.println(finally执行);}}}finally 注意点finally 作用用来释放资源关闭 IO 流、数据库连接等。一般情况下无论异常存不存在finally部分代码都会被执行。特例如果在 try/catch 中执行 System.exit(0);JVM 直接终止finally 不会执行。三、异常的抛出 throws 和 throwthrows 写在方法声明上throws声明这个方法可能抛出某种异常把异常交给调用者去处理。作用告诉调用方调用这个方法要小心这个异常。importjava.io.FileNotFoundException;publicclassThrowsDemo{// 声明该方法可能抛出编译期异常publicstaticvoidtest()throwsFileNotFoundException{}}注意throws 只是声明异常不会真正抛出异常对象。运行时异常不需要 throws 声明。throw 在方法体内手动抛出异常对象throw手动创建异常对象并且把这个异常抛出。publicclassThrowDemo{publicstaticvoidmain(String[]args){Stringstrnull;if(strnull){thrownewNullPointerException(传入的值不能为null);}}}简单区分throws在方法定义声明【可能出现什么异常】throw在方法内部主动抛出【一个具体异常实例】四、异常处理的两种选择try-catch自己捕获并处理异常程序捕获后可以继续往下运行。throws不处理向上抛交给调用这个方法的人处理如果一直向上抛到 main 方法异常就会交给 JVM程序直接终止。五、自定义异常当 JDK 自带的异常无法描述业务场景我们可以自己写异常类。自定义编译期异常继承Exception自定义运行时异常继承RuntimeException不用 throws 声明自定义异常类代码//自定义运行时异常publicclassAgeExceptionextendsRuntimeException{publicAgeException(){}publicAgeException(Stringmsg){super(msg);}}测试使用代码publicclassCustomExceptionTest{publicstaticvoidcheckAge(intage){if(age0||age120){thrownewAgeException(年龄不合法);}else{System.out.println(年龄校验通过);}}publicstaticvoidmain(String[]args){checkAge(200);}}六、学习小结Error 是系统级错误不用处理Exception 才是我们要处理的异常。try-catch 用来捕获处理异常finally 用于资源释放。throws 声明异常throw 主动抛出异常实例。运行时异常编译不报错大多是代码书写问题编译期异常强制要求处理。自定义异常用于描述项目里业务专属的错误场景让报错信息更加清晰。学习感想最开始学习的时候分不清 throws 和 throw也会出现多 catch 顺序写反的编译报错面对这种情况我们要梳理代码运行逻辑一一排查问题并且修改代码。异常不是用来掩盖 bug 的不能滥用 try-catch。能提前判断的错误优先用 if 判断无法预判的运行问题再使用异常机制处理。

相关新闻

数据架构到底在“架”什么?从数据集成、加工、实时到交换,一篇讲透企业数据链路

数据架构到底在“架”什么?从数据集成、加工、实时到交换,一篇讲透企业数据链路

很多企业开始数字化建设以后,都会遇到一个共同的问题:系统越来越多,数据越来越丰富,但真正需要利用数据支撑经营决策时,却发现数据并没有想象中那么容易使用。销售订单记录在 ERP 系统中,客户信息沉淀在 CR…

2026/10/17 2:49:40 阅读更多 →
【计算组成原理笔记01】计算机系统概述|跳出课本平铺直叙,从“需求演进”看懂冯诺依曼架构

【计算组成原理笔记01】计算机系统概述|跳出课本平铺直叙,从“需求演进”看懂冯诺依曼架构

很多计组开篇笔记一上来直接罗列五大部件,很容易让人觉得枯燥、零散。我们换一个思路:所有硬件架构,本质都是前人在解决一个个真实痛点迭代出来的产物,而不是凭空设计的标准答案。顺着「遇到什么麻烦→想出什么方案→方案有什么短…

2026/10/17 2:49:40 阅读更多 →
盈帆AI操盘手,让中国制造都能出海

盈帆AI操盘手,让中国制造都能出海

做外贸AI工具的人,都在讲同一件事:AI帮你生成内容、帮你发邮件、帮你做SEO。 但没有人回答一个更根本的问题。AI到底能替老板干什么 不能替老板干什么?这是所有外贸AI工具都绕开的问题。发一堆邮件、写一堆文案。大概率每句话还都对。 然后呢…

2026/10/17 2:48:40 阅读更多 →

最新新闻

知道却做不到?从道德认知到行动实践的自我训练指南

知道却做不到?从道德认知到行动实践的自我训练指南

我们总在某个深夜突然想明白一件"对的事":该向某个人道歉,该拒绝某个无理的要求,该承认自己错了,该为一件不关己的事站出来。但天亮之后,我们往往什么都没做。问题很少出在"不知道什么是对的"&…

2026/10/17 3:32:53 阅读更多 →
YOLOv8光伏EL检测实战:从PVEL-AD数据集到模型部署

YOLOv8光伏EL检测实战:从PVEL-AD数据集到模型部署

光伏EL(电致发光)检测,是组件出厂前绕不开的一道硬门槛。通电后的电池片会在近红外波段发出特定波长的光,缺陷区域和正常区域在亮度、纹理上有明显差异,但因为整片电池面积大、缺陷形态杂、背景干扰多,纯人…

2026/10/17 3:32:53 阅读更多 →
Java后端音频流代理转发实战:POST拉流与流式响应

Java后端音频流代理转发实战:POST拉流与流式响应

1. 音频流代理转发的整体架构设计音频流从第三方服务到前端浏览器,中间隔着服务端这一层。很多刚接触这个需求的开发者第一反应是“让前端直接去请求那个音频地址不就行了”,但实际项目中往往行不通——第三方接口需要鉴权、跨域限制、签名校验、或者干脆…

2026/10/17 3:32:53 阅读更多 →
从“代码能跑”到“能交付”:第一次作业的工程化实践指南

从“代码能跑”到“能交付”:第一次作业的工程化实践指南

拿到“第一次作业”这个标题时,说实话我愣了一下。博客写多了,见过各种项目复盘、架构解析、源码解读,但很少有人会把“作业”当作正经的经验分享主题。后来转念一想,这个标题其实特别值得写。因为我带过不少新人,也见…

2026/10/17 3:32:53 阅读更多 →
Intel核显跑大模型实测:Ollama部署qwen3.5与Copaw技能配置指南

Intel核显跑大模型实测:Ollama部署qwen3.5与Copaw技能配置指南

说实话,第一次看到这个标题我自己都愣了一下——养龙虾和AI大模型有什么关系?后来才反应过来,原来是把"硬核"玩成了"养龙虾"的谐音梗,讲的其实是Intel核显(UHD/Ultra/Arc)跑大模型这件…

2026/10/17 3:32:53 阅读更多 →
支持向量机基本型与拉格朗日乘子法:从间隔最大化到对偶问题

支持向量机基本型与拉格朗日乘子法:从间隔最大化到对偶问题

2. 间隔最大化:支持向量机的基本型到底在做什么先从一个最朴素的问题说起。假设你手头有一堆二维平面上的数据点,分红色和蓝色两类,现在要画一条直线把两类点分开,你能画出无数条。但哪一条才是"最好"的?我早…

2026/10/17 3:31:53 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →