Java基础:throw和throws的详解

总结来说,throw是用来抛出一个具体的异常实例,而throws是用来声明方法可能会抛出哪些类型的异常,是对调用者的一种通知和要求。

1. throw
  • 作用 : throw关键字用于在方法体内实际抛出一个异常实例。当程序运行到throw语句时,指定的异常会被创建并抛出,立即终止当前方法的执行,并将控制权转移给包含该方法的调用者的异常处理机制。
  • 使用时机 : 当检测到某种错误条件或异常情况时,在方法内部使用throw来抛出一个异常对象,这个对象可以是系统预定义的异常类的实例,也可以是自定义异常类的实例。
  • 特点 : throw总是伴随着一个异常实例,且其后的代码不会被执行,因为一旦抛出异常,当前的代码路径就会被中断。
2. throws
  • 作用 : throws关键字用于声明方法可能抛出的异常类型,它出现在方法签名之后。这告知调用者该方法执行时可能会遇到的异常情况,要求调用者要么处理这些异常(使用try-catch语句块),要么继续向上层方法抛出这些异常。
  • 使用时机 : 当一个方法无法处理或不打算处理某些异常时,可以在方法声明中使用throws来声明这些异常。这样做可以强制调用者意识到潜在的异常风险并做出相应的处理准备
  • 特点 : throws后面可以跟随一个或多个异常类名,用逗号分隔,表示该方法可能抛出多种类型的异常。并且,throws声明并不意味着异常一定会被抛出,它只是声明了一种可能性。
3. 为什么有时候异常必须用throws声明而有时候不用?

如图

(图一)

(图二)

为什么会出现这种情况呢?其实了解过Java异常的人都知道,异常分为两大类,一类是运行时异常,一类是非运行时异常。运行时异常只能在运行时识别,所以编译器无法识别运行时异常,就算不throws出异常也是能编译通过的,而非运行时异常如果不throws出来,编译器就会识别到并报错。

相关推荐
黄俊懿3 小时前
【深入理解SpringCloud微服务】Seata(AT模式)源码解析——全局事务的提交
java·后端·spring·spring cloud·微服务·架构·架构师
JAVA+C语言3 小时前
String Constant Pool
java·开发语言
快乐肚皮3 小时前
一文了解XSS攻击:分类、原理与全方位防御方案
java·前端·xss
白宇横流学长3 小时前
基于SpringBoot实现的历史馆藏系统设计与实现【源码+文档】
java·spring boot·后端
毕设源码-赖学姐4 小时前
【开题答辩全过程】以 高校教学资源共享系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
辣机小司4 小时前
【软件设计师】自编思维导图和学习资料分享(中级已过)
java·c++·软考·软件设计师
爱笑的眼睛114 小时前
深入解析Matplotlib Axes API:构建复杂可视化架构的核心
java·人工智能·python·ai
乐观甜甜圈5 小时前
JDK8 中线程实现方法与底层逻辑详解
java
尤物程序猿5 小时前
Java如何不建表完成各种复杂的映射关系(鉴权概念、区域概念、通用概念)
java·开发语言
cike_y5 小时前
JSP内置对象及作用域&双亲委派机制
java·前端·网络安全·jsp·安全开发