throw/throws 关键字

发布时间:2026/10/12 5:50:05

throw/throws 关键字 一、throws 作用throws写在方法声明处用于声明该方法有可能抛出某种异常把异常交给调用这个方法的人去处理。一句话区分throws 是声明异常自己不捕获抛给上层调用者。 和 try-catch 的区别try-catch 是当场捕获处理throws 是甩锅交给调用方处理。二、语法格式修饰符 返回值 方法名(参数列表) throws 异常类名1,异常类名2...{ // 方法体 }多个异常逗号隔开写的是异常类名。三、代码示例public class ThrowsDemo { // 在方法上声明本方法可能抛出算术异常 public static void test() throws ArithmeticException { int a 10; int b 0; int res a / b; // 发生异常不在这里捕获抛给调用者 } public static void main(String[] args) { // 方式1main方法继续throws异常交给JVM不推荐程序直接崩溃 // public static void main(String[] args) throws ArithmeticException // 方式2调用处用try-catch捕获推荐 try { test(); } catch (ArithmeticException e) { System.out.println(捕获到test方法抛出来的除零异常); } } }四、受检异常编译期异常和运行时异常 throws 区别运行时异常RuntimeException 及其子类如空指针、算术异常方法上写 throws 可以省略编译不报错运行才会抛出。受检异常编译异常IOException 等代码必须处理要么 try-catch 捕获要么方法上加 throws 声明否则编译直接报错。示例受检异常必须 throws 或者捕获import java.io.FileReader; import java.io.IOException; public class ThrowsCheckedDemo { // IOException是受检异常必须声明throws或者内部try-catch public static void readFile() throws IOException { FileReader fr new FileReader(test.txt); } public static void main(String[] args) { try { readFile(); } catch (IOException e) { e.printStackTrace(); } } }五、方法重写时 throws 规则重点子类重写父类方法时throws 有严格限制子类抛出的异常不能比父类更大可以抛出更少、更小的异常父类方法没有 throws子类重写时不能抛出受检异常运行时异常不受这条限制。六、throws 注意事项throws 只是声明可能性不会主动产生异常真正异常还是代码执行出错才产生仅仅声明 throws不会自动捕获和修复 bug调用带有 throws 的方法调用者二选一继续往上 throws使用 try-catch 捕获处理不要在 main 方法滥用 throws会让异常直接交给 JVM程序直接终止。七、throws 与 throw 前置对比下一节学 throwthrows方法声明上声明可能抛出异常后跟异常类可多个throw方法体内手动创建并抛出异常对象后跟异常对象一次只能抛一个。八、核心口诀throws 写在方法头声明异常往外丢 调用方要做选择要么捕获要么丢 编译异常强制管运行异常随便留 子类重写有约束异常不能放大流。Java 学习笔记throw 关键字一、throw 作用throw在方法内部手动创建一个异常对象主动抛出这个异常。适用场景业务逻辑不符合预期手动抛出异常比如传入参数非法。二、语法格式throw new 异常类名(异常提示信息);throw 后面必须是异常对象一次只能抛出 1 个异常。三、代码示例public class ThrowDemo { public static void checkAge(int age) { if(age 0 || age 120){ // 手动创建异常对象并抛出 throw new RuntimeException(年龄不合法必须在0~120之间); } System.out.println(年龄校验通过); } public static void main(String[] args) { try { checkAge(-10); } catch (RuntimeException e) { System.out.println(捕获异常 e.getMessage()); } } }四、throw throws 组合使用手动 throw 受检异常方法上必须用 throws 声明否则编译报错public class ThrowThrowsDemo { public static void test() throws Exception { throw new Exception(手动抛出编译期异常); } public static void main(String[] args) { try { test(); } catch (Exception e) { e.printStackTrace(); } } }五、throw 关键点throw 是主动抛出代码执行到这里立刻抛出后面代码不再执行抛出受检异常必须配合 throws 声明或者内部 try-catch抛出运行时异常不需要 throws 声明throw 一次只能抛出一个异常对象六、throws 和 throw 对比表关键字书写位置作用后跟内容数量throws方法声明后面声明方法可能出现异常异常类名逗号分隔多个多个throw方法体内部主动抛出一个异常实例new 出来的异常对象只能 1 个七、易错点throw 不要和 throws 混淆throw 抛出异常后本行之后代码不会执行业务校验场景大量使用 throw自定义异常也会用到。八、核心口诀throw 写在方法内手动抛出异常体 一旦抛出就终止后续代码不执行 受检异常要声明throws 配套写方法。
延伸阅读

更多相关文章

2026/10/12 5:50:05

宠物门禁端侧AI落地解析:画质检测、活体甄别与离线推理

宠物门禁做不好的原因,多数被归到"识别准确率不够"。但从工程角度看,身份比对是链路最后一环,真正决定成败的是它前面的两段:输入质量与运行时环境。本文从宠物门禁的产品逻辑出发,分析其识别链路&#xff0…

2026/10/12 5:45:05

教学资源库平台开发实战:SpringBoot+Vue+MySQL全栈毕设指南

教学资源库平台,一个非常典型的Java方向毕业设计题目。但真正动手做起来,你会发现它远不止“增删改查”四个字那么简单。SpringBoot Vue MySQL 这个组合,近几年在高校毕业设计里出现的频率高得离谱,原因也很直白:技术…

2026/10/12 5:45:05

高通量免疫标志物检测迎来Luminex新方案:云克隆推出 IL23‑IFNg‑GM‑CSF‑PLGF‑ECF‑TNFα‑MIP3b 七因子组合,依托 luminex 技术赋能炎症与肿瘤免疫研究

摘要:免疫微环境是炎症性疾病、自身免疫病、肿瘤发生发展的核心调控场,IL23、IFNg、GM‑CSF、PLGF、ECF、TNFα、MIP3b 七个因子串联起免疫激活、血管重塑、趋化招募多重生物学通路,是机制解析、药物筛选、生物标志物挖掘的关键靶标。传统单因…

2026/10/12 6:40:08

DeepSeek模型技术原理与本地部署实战

抱歉,我无法基于这个标题和相关内容生成文章。这个选题涉及敏感话题,且原始表达含义不明,不适合以技术博客的形式展开。如果你愿意,我可以帮你改写或创作以下类型的技术内容:DeepSeek 模型的技术原理、部署方式或 API …

2026/10/12 6:40:08

DeepSeek V4 工程落地指南:API 接入、函数调用与私有化部署

DeepSeek V4 发布后,开发者应该关注什么:从模型能力到工程落地最近技术圈最热闹的话题之一,就是 DeepSeek V4 的亮相。这一代模型在推理能力、代码生成、上下文理解等方面又有明显提升。但对绝大多数开发者来说,真正的问题不是“它…

2026/10/12 6:35:07

从零搭建光照监测系统:ESP32与KiwisIoT实战指南

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

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/12 0:04:22

绝缘子缺陷检测数据集清洗与工业级训练实战指南

简介:本资源是面向电力AI研发人员、工业视觉工程师及智能巡检系统开发者的绝缘子缺陷检测专用YOLO格式数据集,解决无人机航拍场景下绝缘子破损、污闪、积雪等9类典型缺陷的精准识别与定位难题。数据集共2139张真实巡检图像(含训练/验证/测试集…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑