跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java 异常基础概念与处理机制

Java 异常是程序执行过程中发生的非正常情况。主要涵盖异常基本概念、继承结构(Throwable 及其子类 Error 和 Exception)、编译时异常与运行时异常的区别。重点阐述两种处理方式:使用 throws 上抛异常给调用者,或使用 try-catch 语句捕捉并处理异常。同时说明 try-catch 执行流程,即异常未被捕获时后续代码不执行,被捕获后继续执行。

JavaCoder发布于 2026/3/16更新于 2026/9/379 浏览
Java 异常基础概念与处理机制

Java 异常基础概念与处理机制

异常的基本概念

什么是异常 程序执行中发生的不正常情况就叫异常。例如除以 0 的计算就是异常。

异常机制有什么用

出现异常的时候将不正常反馈打印出来,方便程序员对异常进行修改处理。出现的反馈信息叫异常信息,由 JVM 打印。

Java 语言中异常以什么形式存在

异常在 Java 中以类的形式存在,每一个异常类都能创建异常对象。

异常的继承结构

Object 类下包含 Throwable 类。 Throwable 下有 Error(不可处理直接退出 JVM)和 Exception(可处理)两个分支。 Exception 下有 Exception 的直接子类(编译时异常)和 RuntimeException(运行时异常)两个分支。

编译时异常和运行时异常

编译时异常和运行时异常都在运行阶段发生,编译阶段不会发生异常,因为只有程序运行时才会 new 对象,异常的发生就是在 new 异常对象。 为什么叫编译时异常? 因为编译时异常必须在编写阶段进行处理,不处理编译器会报错。一般发生的都是编译时异常。 处理编译时异常就像是你觉得要下雨带了一把伞,概率高需要被预处理。 而运行时异常的处理就像是你在路上可能会被鸟屎砸到带了一把伞,概率低,所以一般没必要进行预处理。

Java 语言对异常处理的两种方式

  1. 在方法声明的位置使用 throws 关键字,抛给上一级,谁调用就抛给谁。
  2. 使用 try catch 语句进行异常的捕捉。 选择上抛时,抛给了调用者,调用者要处理这个异常,调用者同样有两种处理方式。 注意: 当异常一直被往上抛时,最后被抛给 main 方法,最终又被抛给 JVM,结果就是程序被终止。 throws 后可以写多个异常,用逗号隔开,抛出的异常类必须是它本身或者他的父类。 一般 main 方法中的异常就不要继续上抛了,最好用 try catch 捕捉。

try catch 语法示例

try {
    // 出现异常的代码块
} catch (异常类名 变量名) {
    // 捕捉到该分支的异常后对异常的处理
}

catch 可以多个,从上到下,从小到大。catch 中的类名也是确切的异常类或其父类。

try catch 中的代码执行顺序

只要异常没被捕捉,采用上抛的方式,此方法的后续代码不执行。 try 中的某一行出现异常则该行后面的代码不会执行。 try catch 捕捉后后续代码可以被执行。

目录

  1. Java 异常基础概念与处理机制
  2. 异常的基本概念
  3. 异常机制有什么用
  4. Java 语言中异常以什么形式存在
  5. 异常的继承结构
  6. 编译时异常和运行时异常
  7. Java 语言对异常处理的两种方式
  8. try catch 语法示例
  9. try catch 中的代码执行顺序

更多推荐文章

查看全部
  • Megick Studio 桌面客户端下载 2026
  • 临床智能体与感知 AI 融合:基于 Python 的医疗 NLP 技术解析
  • VHDL 数字时钟在 Xilinx FPGA 上的实现示例
  • 配置 Spark SQL 访问 Hive 元数据
  • libwebkit2gtk-4.1-0 安装失败时的备选库兼容性评估
  • Ubuntu 22.04 下 libwebkit2gtk-4.1-0 安装全记录:从踩坑到落地
  • Enterprise Architect 16 安装与功能简介
  • 基于鸿蒙 Flutter 的智能家居应用开发实战
  • Spring AI MCP Server 集成与源码解析
  • MCP 插件实战:Browser Tools 集成指南
  • Llama-2-7b 昇腾 NPU 测评总结:核心性能数据与硬件选型参考
  • FPGA 开发常用软件对比:Vivado、Quartus、ModelSim
  • 聊聊 Llama 模型:从概念到 AI 原生应用开发实践
  • Jetpack Compose 入门到实战:核心特性与迁移思路
  • FPGA 实现 MIPI 协议全解析与时序规范
  • LeetCode 92 区间反转:递归与哨兵节点实战解析
  • AI 大模型算法工程师求职指南与高薪职位攻略
  • OpenClaw 相关开源 AI 项目汇总与部署方案
  • Qwen-Image-2512 V2 整合包部署指南:ComfyUI 与 WebUI 支持
  • Stable Diffusion 多采样器深度解析:PLMS、Euler 与 DPM 算法对比

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online