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

Java异常机制核心知识点详解

本文详细讲解Java异常机制核心知识点,涵盖异常体系结构、处理方式(try-catch-finally、throws)、自定义异常、throw与throws区别、常见运行时异常。

一、异常概述

异常是程序在运行过程中出现的错误或不正常情况,会中断程序的正常执行流程。
Java采用异常处理机制,让程序出现问题时可以优雅处理,而不是直接崩溃。

二、异常体系结构

所有异常的根类:java.lang.Throwable

两大子类:

  1. Error(错误)

    • 系统级别、JVM级别的严重问题
    • 程序无法处理,如:StackOverflowError、OutOfMemoryError
    • 无需捕获处理
  2. Exception(异常)

    • 程序可以捕获和处理的问题
    • 分为编译时异常运行时异常

1. 编译时异常(受检异常)

  • 必须在编译阶段处理,否则代码无法运行
  • 如:IOException、SQLException、ClassNotFoundException

2. 运行时异常(非受检异常)

  • 运行阶段才会抛出,编译不强制检查
  • 如:NullPointerException、IndexOutOfBoundsException、ArithmeticException
  • 一般由代码逻辑错误导致

三、异常处理方式一:try-catch-finally

1. 标准格式

try{// 可能出现异常的代码}catch(异常类型 变量名){// 捕获到异常后执行的处理逻辑}finally{// 无论是否异常,最终都会执行(释放资源常用)}

2. 代码演示

publicclassTryCatchDemo{publicstaticvoidmain(String[]args){try{// 可能出现异常的代码inta=10;intb=0;System.out.println(a/b);// 算术异常}catch(ArithmeticExceptione){// 捕获异常并处理System.out.println("捕获到算术异常:除数不能为0");e.printStackTrace();// 打印异常堆栈信息}finally{System.out.println("finally代码块最终一定会执行");}System.out.println("程序继续向下执行");}}

3. 多catch捕获

try{// 代码}catch(NullPointerExceptione){// 空指针处理}catch(IndexOutOfBoundsExceptione){// 越界处理}catch(Exceptione){// 其他异常}

四、异常处理方式二:throws 声明抛出

将异常抛给上层调用者处理,自己不处理。

publicclassThrowsDemo{// 抛出异常,交给调用者处理publicstaticvoidtest()throwsException{inta=10;intb=0;System.out.println(a/b);}publicstaticvoidmain(String[]args){try{test();}catch(Exceptione){e.printStackTrace();}}}

五、throw 手动抛出异常

在程序中主动抛出一个异常。

publicclassThrowDemo{publicstaticvoidcheckAge(intage){if(age<0||age>150){// 手动抛出异常thrownewIllegalArgumentException("年龄不合法:"+age);}}}

六、throw 和 throws 区别

  1. throw

    • 方法内部使用
    • 手动抛出一个异常对象
    • 抛出一个具体异常
  2. throws

    • 方法声明上使用
    • 将异常交给调用者处理
    • 可以声明多个异常

七、自定义异常

  1. 继承Exception(编译时异常)
  2. 继承RuntimeException(运行时异常)
// 自定义年龄非法异常publicclassAgeIllegalExceptionextendsRuntimeException{publicAgeIllegalException(){}publicAgeIllegalException(Stringmessage){super(message);}}

使用自定义异常

publicstaticvoidcheck(intage){if(age<0){thrownewAgeIllegalException("年龄不能为负数");}}

八、常见运行时异常

  1. NullPointerException空指针异常
  2. IndexOutOfBoundsException索引越界异常
  3. ArithmeticException算术异常
  4. IllegalArgumentException参数非法异常
  5. ClassCastException类型转换异常
  6. NumberFormatException数字格式转换异常

九、finally 关键字特点

  1. 无论是否发生异常,finally一定执行
  2. 唯一不执行情况:JVM退出(System.exit(0))
  3. 常用于:IO流关闭、数据库连接释放、资源回收
http://www.gsyq.cn/news/1518765.html

相关文章:

  • i.MX23 AHB-to-APB DMA桥接器配置与调试实战指南
  • Agent-Skills 核心能力与实战表现深度评测
  • 极致轻量内存优化:Mem Reduct专业内存管理实战指南
  • 如何用NSC_BUILDER高效管理你的Switch游戏文件:终极指南
  • 终极指南:如何用E-Viewer打造完美的Windows漫画阅读体验
  • Phi-2:2.7B轻量模型如何实现工业级确定性推理
  • 中文新闻14分类实战包:BERT微调+TextCNN对比+Flask在线预测服务
  • 2026佛山防水怎么彻底解决?苏易修缮教你根治漏水不复发全攻略 - 苏易修缮
  • 人形机器人在工业装配中的真实靶心:结构化动作执行
  • 小说下载工具:打造你的永久数字图书馆
  • 本地行业实测!武汉黄金变现靠谱选择汇总 - 讯息早知道
  • 基因组水平转移检测完整指南:使用HGTector2快速发现跨物种基因流动
  • SRTP与MACsec硬件加速实战:从PDB配置到错误排查的工程指南
  • 终极指南:5分钟免费打造专业级富文本编辑器界面
  • FAB设备OEE自动化分析工具:月度报表从2天缩短到30秒
  • 2026年太原财税管理公司哪家强?本土机构对比测评 - 互联百晓生
  • 告别纸质回执!“报名管家”手写签字知情同意书,全功能免费引爆校园全场景接龙 一张纸质“家长签字回执”,折腾了多少班主任? - 亲测好用工具
  • fast.ai工程师必备:Linux四层状态机实战指南
  • 不止于抓包:用Ubiqua的Network Explorer和Graphic View透视你的Zigbee网络拓扑与设备关系
  • MoocDownloader终极指南:3分钟掌握MOOC课程离线下载的完整方法
  • RunPod实战指南:GPU推理服务一键部署与成本优化
  • 2026黄金变现干货!武汉优质首饰回收渠道推荐 - 讯息早知道
  • 如何用XUnity.AutoTranslator打破Unity游戏语言壁垒:3步实现无障碍游戏体验
  • 2026南宁防水怎么彻底解决?苏易修缮教你根治漏水不复发全攻略 - 苏易修缮
  • 告别flex gap兼容性焦虑:一个Sass Mixin搞定所有老安卓机型
  • 2026年太原财务代理记账哪家好?本土财税公司推荐 - 互联百晓生
  • 3个颠覆性技巧:用APK安装器在Windows上高效运行安卓应用
  • MC68377 TPU3深度解析:从硬件定时器到PWM与UART的实战应用
  • 2026年太原财务管理公司哪家强?服务能力评估解析 - 互联百晓生
  • Android手机直连单片机/传感器的串口调试APK(免Root,支持USB转串口)