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

Java中的异常机制

目录

Error(错误)

Exception(异常)

受检异常(Checked Exception)

非受检异常(Unchecked Exception)

图示总结:

异常处理机制

try-catch-finally

throws关键字

图示总结:

自定义异常

图示:

异常处理最佳实践


        在理想状态下,用户输入数据的格式永远都是正确的,选择打开的文件也一定存在,并且永远不会出现bug。然而,在现实世界中却充满了不良的数据和带有问题的代码,现在是讨论Java程序设计语言处理这些问题的机制的时候了。

Error(错误)

Error是程序无法处理的严重问题,表示系统级错误,通常由JVM抛出。

示例:

Error释义
ThreadDeath线程终止错误
OutOfMemoryError内存不足
StackOverFlowError栈溢出
NoClassDefFoundError类定义未找到

Exception(异常)

受检异常(Checked Exception)

关于受检异常我们必须知道:

  • 编译时检查,必须处理否则无法通过编译
  • 例子:ClassNotFoundException, IOException

特点:

  • 继承自Exception但不继承RuntimeException
  • 代表预期可能发生的问题
  • 必须用try-catch捕获或throws声明

非受检异常(Unchecked Exception)

关于非受检异常我们必须知道:

  • IndexOutOfBoundsException
  • NullPointerException

特点:

  • 继承自RuntimeException
  • 编译时不强制处理
  • 通常是程序逻辑错误导致

图示总结:


异常处理机制

try-catch-finally

try {// 可能出现异常的代码
} catch (ExceptionType1 e1) {// 处理ExceptionType1
} catch (ExceptionType2 e2) {// 处理ExceptionType2
} finally {// 无论是否发生异常都会执行的代码
}

throws关键字

if (input == null) {throw new NullPointerException("输入不能为null");
}

图示总结:


自定义异常

创建方法:

// 继承Exception或RuntimeException
class MyException extends Exception {public MyException(String message) {super(message);}
}

图示:


异常处理最佳实践

  1. 精准捕获:不要直接捕获Exception,应捕获具体异常类型
  2. 资源管理:使用try-with-resources替代finally
    try (InputStream is = new FileInputStream("file.txt")) {// 使用资源
    } catch (IOException e) {// 处理异常
    }
  3. 异常信息:提供有意义的错误信息
  4. 避免空catch块:至少记录异常
  5. 异常转换:将底层异常转换为适合业务层的异常

相关文章:

  • 时序数据库IoTDB分布式系统监控基础概述
  • 2025年中国主流DevOps平台对比分析:Gitee、阿里云效与GitLab CE的技术适配与合规实践全景解读
  • vue-ganttastic甘特图label标签横向滚动固定方法
  • 多模态论文笔记——NaViT
  • 零基础用 Hexo + Matery 搭建博客|Github Pages 免费部署教程
  • NineData 社区版 V4.1.0 正式发布,新增 4 条迁移链路,本地化数据管理能力再升级
  • RabbitMq消息阻塞,立即解决方案
  • NNLM神经网络语言模型总结
  • 使用 hover-class 实现触摸态效果 - uni-app 教程
  • 使用VSCode编辑Markdown+PlantUml
  • 推荐一个Winform开源的UI工具包
  • HTTP / HTTPS 协议
  • 移动网页调试工具实战:从 Chrome 到 WebDebugX 的效率演进
  • 【C/C++】自定义类型:结构体
  • Ubuntu 系统默认已安装 python,此处只需添加一个超链接即可
  • 单向循环链表C语言实现实现(全)
  • 在Ubuntu24.04中配置开源直线特征提取软件DeepLSD
  • Kubernetes排错(十七) :kubelet日志报device or resource busy
  • IIS服务器URL重写配置完整教程
  • Spark 集群配置、启动与监控指南
  • 女外交官郑璇已任中国驻莫桑比克大使
  • 上海市重大工程一季度开局良好,崇明线等按既定计划加快建设
  • 国台办:民进党当局刻意刁难大陆配偶,这是不折不扣的政治迫害
  • 最新研究:新型合成小分子可“精准杀伤”癌细胞
  • 宝通科技:与宇树合作已签约,四足机器人在工业场景落地是重点商业化项目
  • 人民日报任平:从汽车产销、外贸大盘看中国经济前景