JAVA异常面试题-异常的机制

Java 异常处理是 Java 语言中一个非常重要的特性,它提供了一种结构化的方式来处理程序运行时可能出现的错误。通过异常处理,程序可以在遇到错误时优雅地恢复或终止,而不是无序崩溃。Java 的异常处理机制主要包括以下几个组成部分:

1、Throwable 类

所有异常类都是从 java.lang.Throwable 类派生出来的。Throwable 类有两个主要的子类:ErrorException

  • Error:表示程序无法处理的严重问题,大多数错误与代码编写者的行为无关,通常表示代码运行环境出现了问题。例如,虚拟机崩溃或资源耗尽等。一般情况下,应用程序不应该尝试捕获这些错误。
  • Exception :表示程序可以处理的问题,通常由程序中的逻辑错误或其他可控问题引起。Exception 又分为两大类:
    • 受检异常(Checked Exception) :除了 RuntimeException 及其子类之外的所有异常都被称为受检异常。在编译阶段,如果方法体中有抛出这种异常的可能性,那么编译器会强制要求程序员要么使用 try-catch 块捕获异常,要么通过 throws 关键字声明该方法可能抛出的异常。
    • 非受检异常(Unchecked Exception) :继承自 RuntimeException 的异常称为非受检异常。这类异常通常是由于程序逻辑错误引起的,比如数组越界、空指针访问等。对于这类异常,Java 编译器不要求必须进行处理。

2.、异常处理语句

try-catch :用于捕获并处理异常。try 块中包含可能会抛出异常的代码,而 catch 块则定义了如何处理这些异常。

java 复制代码
try {
    // 可能抛出异常的代码
} catch (SpecificException e) {
    // 处理特定类型的异常
} catch (AnotherException e) {
    // 处理另一种类型的异常
} finally {
    // 无论是否发生异常都会执行的代码
}

finallyfinally 块总是会被执行,不论是否有异常抛出,也不论异常是否被捕获。通常用来释放资源,如关闭文件流或数据库连接等。

throw:用于手动抛出一个异常对象。

java 复制代码
throw new SpecificException("异常信息");

throws :用于声明一个方法可能会抛出的异常。如果一个方法可能会抛出受检异常,那么这个方法必须使用 throws 关键字来声明这些异常。

java 复制代码
public void someMethod() throws SpecificException, AnotherException {
    // 方法体
}

3、自定义异常

Java 允许开发者根据需要创建自定义异常。自定义异常通常继承自 ExceptionRuntimeException。自定义异常有助于提高代码的可读性和维护性,使得错误类型更加具体明确。

java 复制代码
public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}
相关推荐
不学无术の码农1 分钟前
《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
开发语言·python
tomcsdn317 分钟前
SMTPman,smtp的端口号是多少全面解析配置
服务器·开发语言·php·smtp·邮件营销·域名邮箱·邮件服务器
EnigmaCoder12 分钟前
Java多线程:核心技术与实战指南
java·开发语言
攀小黑15 分钟前
阿里云 使用TST Token发送模板短信
java·阿里云
麦兜*21 分钟前
Spring Boot秒级冷启动方案:阿里云FC落地实战(含成本对比)
java·spring boot·后端·spring·spring cloud·系统架构·maven
自由鬼1 小时前
正向代理服务器Squid:功能、架构、部署与应用深度解析
java·运维·服务器·程序人生·安全·架构·代理
G等你下课1 小时前
从点击到执行:如何优雅地控制高频事件触发频率
前端·javascript·面试
Jackson_Mseven1 小时前
面试官:说说 startTransition 和 useDeferredValue?我:我用它一行代码救了首页!
前端·javascript·面试
XiaolongTu1 小时前
Kotlin Flow详述:从一个“卡顿”问题到线程切换的本质
android·面试
国家不保护废物1 小时前
节流(throttle):给频繁操作加上冷却时间!🔥
前端·javascript·面试