前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 异常处理上篇: Throwable 详解

Java 异常处理上篇: Throwable 详解

原创
作者头像
Lorin 洛林
发布2023-12-15 20:31:45
2320
发布2023-12-15 20:31:45
举报
文章被收录于专栏:Java 技术小屋Java 技术小屋

前言

  • Java 异常处理是编写稳健、可靠程序的关键组成部分。在 Java 中,异常是一种程序运行时可能发生的错误或异常情况的表示。异常处理的核心是 Throwable 类及其子类,它们为我们提供了处理程序执行中出现的问题的机制。本文将深入探讨 Throwable 类,探索其层次结构、常见的子类以及异常处理的常用关键字。
Java 异常
Java 异常

Throwable 类

  • Java 中,Throwable 是所有错误和异常的父类。它派生出两个主要的子类:ErrorException

Error

  • Error 类表示严重的错误,通常是虚拟机发生无法恢复的错误。程序员通常不需要直接捕获或处理 Error,因为这类错误通常意味着系统出现了不可逆的问题。例如,OutOfMemoryError 表示内存不足,StackOverflowError 表示堆栈溢出等。
Error
Error

Exception

  • Exception 类是所有异常的父类。它分为两种:受检异常(Checked Exception)和非受检异常(Unchecked Exception)
Exception
Exception

受检异常(Checked Exception)

  • 受检异常是在编译时强制处理的异常,程序必须在代码中显式地处理或者通过 throws 关键字声明方法可能抛出的受检异常。典型的受检异常包括 IOException、SQLException 等,它们表示程序在运行时可能遇到的外部因素导致的问题。
代码语言:java
复制
// try-catch 显示处理
try {
    // 有可能抛出 IOException 的代码
} catch (IOException e) {
    // 处理 IOException
} finally {
    // 无论是否发生异常,都会执行的代码
}

// throws 声明可能抛出的异常
private static void extracted() throws IOException {
    throw new IOException();
}

非受检异常(Unchecked Exception)

  • 非受检异常是在运行时可能抛出的异常,也称为运行时异常(Runtime Exception)。它们通常是由程序逻辑错误引起的,无法在编译时预测。典型的非受检异常包括 NullPointerException、ArrayIndexOutOfBoundsException 等。
代码语言:java
复制
int[] array = {1, 2, 3};
int value = array[5]; // 抛出 ArrayIndexOutOfBoundsException

异常处理关键字

  • Java 中,异常处理关键字包括 try、catch、finally 和 throw

try-catch

  • try 块用于包含可能抛出异常的代码,而 catch 块用于捕获并处理这些异常。一个 try 块可以包含多个 catch 块,按照它们在代码中的顺序依次匹配异常。
代码语言:java
复制
try {
    // 可能抛出异常的代码
} catch (ExceptionType1 e1) {
    // 处理 ExceptionType1 异常
} catch (ExceptionType2 e2) {
    // 处理 ExceptionType2 异常
} finally {
    // 无论是否发生异常,都会执行的代码
}

finally

  • finally 块用于包含无论是否发生异常都需要执行的代码。通常 finally 用于释放资源,例如关闭文件或数据库连接。
代码语言:java
复制
try {
    // 可能抛出异常的代码
} catch (Exception e) {
    // 处理异常
} finally {
    // 无论是否发生异常,都会执行的代码
    // 通常用于释放资源
}

throw

  • throw 关键字用于手动抛出异常,以便在发生特定条件时触发异常。它在方法体内部使用,将一个 Throwable 对象抛出到调用者。
代码语言:java
复制
void checkAge(int age) {
    if (age < 0) {
        throw new IllegalArgumentException("Age cannot be negative");
    }
}

总结

  • Java 异常处理是构建健壮程序的关键组成部分。Throwable 类及其子类为我们提供了处理程序执行中出现的问题的框架。通过合理使用 try、catch、finallythrow,我们能够更好地控制程序的流程,增强程序的可维护性和稳定性。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Throwable 类
    • Error
      • Exception
        • 受检异常(Checked Exception)
        • 非受检异常(Unchecked Exception)
    • 异常处理关键字
      • try-catch
        • finally
          • throw
          • 总结
          • 个人简介
          相关产品与服务
          云数据库 MySQL
          腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档