Java 认识异常

目录

前言

[一、java 的异常体系](#一、java 的异常体系)

二、异常的处理

三、自定义异常


前言

本文介绍了 Java 中的异常体系,异常的处理流程和自定义异常。


一、java 的异常体系

Throwable 是异常体系的顶层类,包括两个重要的子类,Error 和 Exception;

Error 是 JVM 无法解决的严重问题,比如 JVM 内部错误,资源耗尽等,常见的有 StackOverFlowError,OutOfMemeryError;

Exception 异常产生后程序员可以通过代码处理,使程序继续执行;

Exception 分为编译时异常(受查异常)和运行时异常(非受查异常);

二、异常的处理

异常处理的 5 个关键字:try, catch, finally, throw, throws;

throw 写在方法内部,用于抛出异常,运行时异常可以不处理,非运行时异常用户必须处理;

throws 申明异常,跟在方法的参数列表后,告诉调用方处理异常;

try, catch, finally 语法格式:

try{

// 程序的主逻辑

} catch(Exception e){

// 捕获异常后的策略

}finally{

// 关闭资源

}

try catch finally 的逻辑:

程序先执行 try 中的代码,如果 try 中的代码出现异常,就会结束 try 中的代码,看和 catch 中的异常类型是否匹配;

如果找到匹配的异常类型,就会执行 catch 中的逻辑;

如果没有找到匹配的异常类型,异常就会向上传递给调用方,如果调用者也没有处理异常,异常就会继续向上传递,如果传递到 main 方法还没有处理异常,就会交给 JVM,此时 JVM会终止程序;

无论是否找到匹配的异常的类型,finally 中的代码都会执行;

三、自定义异常

自定义异常需要继承某个异常,例如 RuntimeException :

java 复制代码
public class RuntimeException extends Exception {
    static final long serialVersionUID = -7034897190745766939L;

    /** Constructs a new runtime exception with {@code null} as its
     * detail message.  The cause is not initialized, and may subsequently be
     * initialized by a call to {@link #initCause}.
     */
    public RuntimeException() {
        super();
    }

    // ......
}

自定义异常要注意继承 RuntimeException 或者 Exception;

继承 RuntimeException 是运行时异常,属于非受查异常,不需要声明;

继承 Exception 默认是非运行时异常,属于受查异常,需要声明;

**printStackTrace():**打印堆栈信息,出现异常时打印堆栈信息可以迅速定位发生异常代码的位置;

相关推荐
No0d1es5 分钟前
2025年12月电子学会青少年软件编程Python六级等级考试真题试卷
开发语言·python·青少年编程·等级考试·电子学会
zlp19926 分钟前
xxl-job java.sql.SQLException: interrupt问题排查(二)
java·开发语言
sunnyday04269 分钟前
深入理解Java日志框架:Logback与Log4j2配置对比分析
java·log4j·logback
superman超哥13 分钟前
Rust HashSet与BTreeSet的实现细节:集合类型的底层逻辑
开发语言·后端·rust·编程语言·rust hashset·rust btreeset·集合类型
浩瀚地学13 分钟前
【Java】异常
java·开发语言·经验分享·笔记·学习
张np17 分钟前
java基础-LinkedHashMap
java·开发语言
gihigo199817 分钟前
基于MATLAB的周期方波与扫频信号生成实现(支持参数动态调整)
开发语言·matlab
行者9622 分钟前
Flutter适配OpenHarmony:国际化i18n实现中的常见陷阱与解决方案
开发语言·javascript·flutter·harmonyos·鸿蒙
csbysj202024 分钟前
RSS 阅读器:全面解析与使用指南
开发语言
毕设源码-朱学姐27 分钟前
【开题答辩全过程】以 高校图书馆管理系统为例,包含答辩的问题和答案
java