当前位置: 首页 > 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.jsqmd.com/news/1008522/

相关文章:

  • BarrageGrab:无需代理的全平台直播弹幕抓取终极解决方案
  • 2026年知识产权商标注册公司TOP10实力榜:专业机构推荐指南 - 品牌推荐
  • Android Studio中文语言包:5分钟快速汉化,打造母语开发环境
  • 大模型概念级遗忘:精准擦除目标知识的神经外科方案
  • 保姆级教程:在华为AR路由器上配置DHCPv6中继与PD前缀代理(附报文抓包分析)
  • 2026年6月反应釜厂家综合实力深度评测与权威排行榜:专业坐标与理性选择指南 - 品牌推荐
  • ArcGIS栅格计算器不够用?教你写一个‘超级计算器’,批量搞定单位换算、空值填充和条件判断
  • 鸣潮工具箱终极指南:5分钟解锁120帧极致游戏体验
  • 嵌入式MCU深度调试:BDC与DBG模块原理、配置与实战应用
  • 2026年6月沈阳设计培训学校实务参考榜:行业洗牌期,这5家机构凭硬核实力脱颖而出 - 品牌推荐
  • GanttProject免费开源项目管理工具:快速创建专业甘特图的完整指南
  • 2026年6月北京除尘器厂家综合实力深度评测与权威排行榜:专业坐标与理性选择指南 - 品牌推荐
  • NSK W1403FA-5P-C5Z8 高速精密丝杠技术详述
  • 大件快递怎么寄划算?大件快递怎么寄便宜?省钱技巧+寄件平台对比 - 快递物流资讯
  • 快递首重多少斤?快递首重是1公斤吗?重量怎么算才省钱 - 快递物流资讯
  • GanttProject完全指南:如何用免费开源工具快速规划你的项目?
  • 2026年6月麻将机十大品牌深度横评:技术、品控与场景适配全解析,谁才是真正的“省心王者”? - 品牌推荐
  • wxappUnpacker终极指南:5步解锁小程序逆向工程
  • BetterNCM安装器深度技术解析:Rust构建的现代化插件管理架构揭秘
  • 汽车IPD全流程落地实战案例 - 智慧园区
  • 告别Axure RP英文界面:3分钟打造全中文设计环境
  • 2026年番禺区广州实体刻章店服务能力对比分析:资质、效率与全品类覆盖谁更胜一筹? - 优质品牌商家
  • 深度解析JPEXS Free Flash Decompiler:5大核心技术架构揭秘
  • DyberPet桌面宠物框架:打造智能互动桌面伴侣的完整指南
  • 论文党的开挂装备!常用的AI论文工具,逻辑清晰质量高
  • 2026年劳保用品厂家综合能力分析:谁在服务、资质与性价比上更胜一筹? - 优质品牌商家
  • 2026年6月设计培训学校权威榜单:实战导向与产教融合,谁在定义行业新标杆? - 品牌推荐
  • 2026自组网照明明灯管质量哪家更可靠 - 品牌排行榜
  • 司法数据可视化提示词工程:用GPT-4生成可审计的Streamlit死刑统计看板
  • Py-ART:20+雷达数据格式支持的Python气象雷达分析终极解决方案