Java如何获取异常错误码?

在Java中,可通过捕获异常后调用getMessage()获取异常信息;针对特定异常(如SQLException),使用getErrorCode()直接获取错误码,一般流程:try-catch捕获异常,判断异常类型后调用对应方法。

标准异常码的获取方式

Java标准异常本身不直接提供“异常码”,但可通过以下方法提取关键信息:

Java如何获取异常错误码?

  1. getMessage() 方法
    返回异常的详细描述字符串(含部分错误信息):

    try {
        int num = Integer.parseInt("abc"); // 触发NumberFormatException
    } catch (NumberFormatException e) {
        System.out.println("异常信息: " + e.getMessage()); 
        // 输出:For input string: "abc"
    }
  2. toString()getClass().getName()
    获取异常类名和消息:

    catch (Exception e) {
        System.out.println("异常类型: " + e.getClass().getName()); 
        // 输出:java.lang.NumberFormatException
    }

自定义异常码(推荐实践)

通过继承异常类实现自定义错误码:

Java如何获取异常错误码?

// 1. 定义含错误码的异常类
public class CustomException extends Exception {
    private final int errorCode; // 自定义异常码
    public CustomException(int errorCode, String message) {
        super(message);
        this.errorCode = errorCode;
    }
    public int getErrorCode() {
        return errorCode;
    }
}
// 2. 使用并获取异常码
try {
    throw new CustomException(1001, "文件读取失败");
} catch (CustomException e) {
    System.out.println("错误码: " + e.getErrorCode()); // 输出:1001
    System.out.println("错误信息: " + e.getMessage()); // 输出:文件读取失败
}

第三方库的异常码

如Spring、Hibernate等框架常封装标准异常码:

// 示例:Spring的响应状态码
try {
    restTemplate.getForEntity("https://invalid-url", String.class);
} catch (HttpClientErrorException e) {
    System.out.println("HTTP状态码: " + e.getStatusCode().value()); // 输出:404
}

JVM错误码(非异常场景)

程序退出时通过 System.exit() 返回状态码:

public static void main(String[] args) {
    try {
        // 业务逻辑
    } catch (Exception e) {
        System.exit(1); // 返回错误码1给操作系统
    }
}

关键注意事项

  1. 优先使用标准异常:如 IllegalArgumentExceptionIOException 等,避免过度自定义。
  2. 日志记录:结合日志框架(如SLF4J)输出异常码和堆栈:
    catch (Exception e) {
        logger.error("错误码: {} - 详情: {}", customCode, e.getMessage(), e);
    }
  3. 避免敏感信息:异常消息中禁止包含密码、密钥等数据(OWASP规范)。

  • 标准异常:通过 getMessage()getClass() 提取信息。
  • 自定义异常:继承异常类并添加 errorCode 字段(最灵活)。
  • 框架异常:调用框架提供的API(如 getStatusCode())。
  • 系统错误码:通过 System.exit() 返回给操作系统。

引用说明:本文代码示例遵循Oracle官方Java规范,自定义异常设计参考《Effective Java》条目72,第三方库用法基于Spring Framework 5.3文档,安全规范引用OWASP错误处理指南。

Java如何获取异常错误码?

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/27176.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月16日 22:26
下一篇 2025年6月16日 22:33

相关推荐

  • Java两个线程怎么轮流执行?

    在Java中轮流执行两个线程可通过synchronized配合wait/notify机制实现:共享同一监视器锁,线程执行后主动等待并唤醒对方,严格交替运行,也可用ReentrantLock与双Condition精确控制切换,确保线程间顺序协作。

    2025年6月8日
    100
  • Java如何生成压缩文件?

    在Java中导出压缩文件主要使用ZipOutputStream类,首先创建FileOutputStream,再包装为ZipOutputStream,遍历文件列表,为每个文件创建ZipEntry并放入流中,通过BufferedInputStream读取文件内容写入,最后关闭所有流资源确保文件正确生成。

    2025年6月12日
    100
  • Java如何实现页面搜索功能?

    在Java中实现页面搜索功能,通常结合前端传递关键词,后端通过Spring Boot框架接收请求,利用JPA或MyBatis操作数据库进行模糊查询(如SQL的LIKE语句),最后将匹配结果返回页面渲染展示,核心步骤包括参数接收、数据库查询和结果返回。

    2025年6月12日
    100
  • Java如何生成随机数?

    在Java中生成随机整数常用java.util.Random类或ThreadLocalRandom类,new Random().nextInt(51) + 30可生成30-80范围的整数,其中51是范围跨度(80-30+1)。

    2025年6月15日
    000
  • qtp集成java步骤

    在QTP中添加Java支持需安装Java插件,操作步骤:启动QTP→进入”Add-in Manager”→勾选”Java”插件→完成加载,确保系统环境变量中已正确配置JAVA_HOME路径,并重启QTP生效。

    2025年6月12日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN