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

Java14 异常知识点

一、概念【理解即可】

1. 异常:程序运行过程中,出现的非正常情况。

2. 异常的处理:当异常出现时,执行一段预先准备好的代码。

3. 异常处理的必要性:减少用户的损失、同时减小给用户带来麻烦,也可以对用户做一些提示信息。
二、异常的分类【面试重点】

1. Throwable:Java语言中所有错误或是异常的父类,位于java.lang包中

◦ 核心方法:
方法声明 功能说明
String getMessage() 获取字符串类型异常信息,用于给用户展示提示信息
void printStackTrace() 打印输出方法调用过程中产生的详细异常信息,供程序员调试程序

2. 子类Error:代表错误

◦ 说明:仅靠程序本身无法恢复的严重错误,例如JVM内存不足、方法调用栈溢出等。

◦ 示例:java.lang.StackOverflowError(递归导致的栈溢出)

3. 子类Exception:代表异常

◦ RuntimeException(运行时异常/未检查异常):与RuntimeException有直接或间接继承关系的异常类

◦ 特点:编译器不会检测此类异常,运行时才报错。

◦ 处理:可处理,可不处理(严谨代码建议处理),此类异常可以避免。

◦ 常见示例:

1. java.lang.ArrayIndexOutOfBoundsException:下标越界

2. java.lang.NullPointerException:空指针异常

3. java.lang.ClassCastException:类型转换异常

4. java.lang.NumberFormatException:数字格式转换异常

◦ 非RuntimeException(非运行时异常/已检查异常):与RuntimeException无任何继承关系的异常类

◦ 特点:编译器检测此类异常,编译时报错。

◦ 处理:此类异常必须处理。

◦ 示例:Class.forName("day1.TestStudent");
三、异常的产生

1. 自动产生异常

◦ 产生原因:程序运行过程中遇到错误代码,自动产生异常。

◦ 结果:程序一旦遇到异常,会被终止,无法继续执行异常之后的代码。

2. 手动产生异常【开发重点】

◦ 关键字:throw

◦ 语法:throw new 异常类类名("异常信息");

◦ 位置:必须定义在方法内部

◦ 结果:相当于return,终止当前程序,程序会因异常而被终止。
四、异常的传递【理解即可】

• Java中的异常沿着方法的调用链进行反方向传递,最终传递给JVM,导致程序被终止。
五、异常的处理【开发重点】

1. 消极处理异常(声明异常)

• 关键字:throws

• 位置:在方法声明的位置进行消极处理

• 语法:修饰符 返回值类型 方法名(形参列表) throws 异常类名1,异常类名2,异常类名3{}

• 结果:仅推卸责任,程序仍会因异常而被终止。

• 作用:让非运行时异常在编译阶段通过。

• 注意:消极处理异常时,可以利用父类类型处理其子类型的异常。

2. 积极处理异常(捕获异常)

• 语法:
try{
// 可能出现异常的语句
}catch(异常类名 e){
// 异常出现时需要执行的语句
}
• 注意事项:

1. try后面可以定义多个catch结构,一旦try出现异常,会从上往下依次匹配第一个符合的catch。

2. catch可以利用父类类型处理本类型+所有子类型的异常(多态的应用)。

3. 定义子类的catch需要写在其父类类型的catch结构前面。

4. catch中只能捕获try可能出现的非运行时异常;但catch中可以处理任意运行时异常,不管try中是否有可能出现此类异常。

3. finally的应用

• 语法:
try{
// 可能出现异常的语句
}catch(异常类名 e){
// 异常出现时执行的语句
}finally{
// 不管有没有异常,都必须执行的语句
}
• 应用场景:开发中不建议将return语句定义在finally中,通常finally用于关闭资源(如文件流、数据库连接)。

• 常见结构:

◦ try{}catch(){}

◦ try{}catch(){}catch(){}

◦ try{}catch(){}finally{}

◦ try{}catch(){}catch(){}finally{}

◦ try{}finally{}(仅为了执行必须语句)

• 注意:try后面可以跟多个catch,但最多只能有一个finally;try后面至少有一个catch或是finally。
六、自定义异常

1. 定义规则:

◦ 类继承Exception或是其子类 → 抛出的异常为非运行时异常

◦ 类继承RuntimeException或是其子类 → 抛出的异常为运行时异常

2. 必须提供的构造方法:

◦ 无参构造方法

◦ 带String类型参数的构造方法(借助super()为父类Throwable的异常信息属性赋值)
public class 类名 extends Exception/RuntimeException{
public 类名(){}
public 类名(String message){
super(message);
}
}
七、方法覆盖(异常相关)【面试+开发重点】

方法重写的异常相关规则:

1. 子类的方法名、形参列表、返回值类型和父类相同。

2. 子类的方法的访问修饰符和父类相同或是更宽松(如父类protected,子类可以是protected或public)。

3. 子类不能抛出比父类更多、更宽泛的异常(可以抛出更少、更窄的异常,或不抛出异常)。

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

相关文章:

  • 小米版Claude Code正式发布,这次开源给到夯。
  • ArcGIS栅格计算器不够用?教你写一个‘超级计算器’,批量搞定单位换算、空值填充和条件判断
  • 2026年6月麻将机十大品牌深度横评:技术、品控与场景适配全解析,谁才是真正的“省心王者”? - 品牌推荐
  • wxappUnpacker终极指南:5步解锁小程序逆向工程
  • DyberPet桌面宠物框架:打造智能互动桌面伴侣的完整指南
  • BetterNCM安装器深度技术解析:Rust构建的现代化插件管理架构揭秘
  • 告别Axure RP英文界面:3分钟打造全中文设计环境
  • 2026自组网照明明灯管质量哪家更可靠 - 品牌排行榜
  • FunClip革命:当大语言模型遇见视频剪辑,传统工作流如何被彻底颠覆
  • Photoshop纹理压缩神器:Intel Texture Works插件终极指南
  • 2026年无锡货款纠纷律师怎么选?江阴欠款追讨法律服务现状与实务分析 - 优质品牌商家
  • 人生Agent的庖丁解牛
  • 2026年新发布四川双曲铝单板工厂业内推荐与选择策略 - 品牌鉴赏官2026
  • 2026年新发布行业观察:河北沧州盐山堆焊碳化铬耐磨钢管实力厂家深度解析 - 品牌鉴赏官2026
  • 炸裂!输入主题,这几款AI论文平台直接生成毕业论文!
  • 2026年深圳名酒回收市场观察:正规渠道与鉴定服务深度盘点 - 优质品牌商家
  • 从Gaussian输出到Amber力场:RESP电荷拟合的完整工作流与版本兼容性详解
  • 2026年6月专业的江苏吊装无人机电机公司哪家靠谱推荐,长航时重载电机与关节模组公司选择指南 - 海棠依旧大
  • i.MX23引脚复用与驱动强度配置:嵌入式硬件设计核心技能详解
  • 2026年新消息:广东工程事故纠纷案件高发,如何精准选择专业法律服务团队 - 品牌鉴赏官2026
  • 郑州空调维修上门加氟移机空调不制冷2026推荐本地老牌鑫盛达、冷顺安 - 我叫一
  • 2026年6月正规的驾驶员培训公司有哪些推荐,C1手动挡、C2自动挡、D证三轮摩托车、E证两轮摩托车中心选择指南 - 海棠依旧大
  • 广州工厂搬家公司推荐:5家企业信赖的专业搬迁服务商 - 从来都是英雄出少年
  • 2026年杭州美术教育行业观察:杭州文颖美术学校等多家机构实力解析与招生趋势 - 优质品牌商家
  • 物业系统微信通知功能实测:催缴成功率提升多少
  • 课程笔记
  • Halcon实战:用smallest_rectangle1和smallest_rectangle2搞定工业瑕疵的两种矩形框标注
  • 别再瞎猜了!用MATLAB Profiler精准定位Simulink仿真性能瓶颈(附详细报告解读)
  • 3步搞定泰坦之旅无限仓库:TQVaultAE终极装备管理指南
  • 如何用d2s-editor快速修改暗黑破坏神2存档:5分钟掌握终极技巧