当前位置: 首页 > 面试题库 >

异常与异常层次结构中的错误代码

汪凌
2023-03-14
问题内容

您认为可以在异常内使用错误代码来指定错误类型吗?请看下面的代码:

public class MyException extends Exception {
    public static final String ERROR_CODE_INVALID_NAME = "";
    public static final String ERROR_CODE_INVALID_ID = "";
    ...

    private String errorCode;

    public MyException(String message, String errorCode) {
        super(message);
        this.errorCode = errorCode;
    }

    public String getErrorCode() {
        return errorCode;
    }
}

我知道在此示例中使用枚举而不是字符串会更好,但是我实际上担心错误代码的概念。您认为在这里异常层次结构会更好吗?我找不到任何权威来源指出异常中的错误代码是反模式的。谢谢。


问题答案:

如果您想根据导致异常(无效名称或无效ID)的原因做出不同的响应(在代码中),那么我建议您使用不同的异常。

如果不是,那么您甚至不需要该getErrorCode()方法,您只需将错误代码添加到异常消息中,该异常将为您提供调试所需的所有信息。



 类似资料:
  • 问题内容: python中的any命令行选项可以打印异常/错误类层次结构吗? 输出应类似于http://docs.python.org/2/library/exceptions.html#exception- hierarchy 问题答案: 检查模块可能会有所帮助,特别是getclasstree()函数: 将给定的类列表排列为嵌套列表的层次结构。在出现嵌套列表的地方,它包含派生自该类的类,这些类的

  • 在构造方法中无法使用返回值,因此遇到错误只能抛出异常,而不应该使用Fatal Error 如果是用户使用方法存在问题,必须要修改程序代码,这类错误可以抛出Fatal Error 非构造方法,只return false,并设置错误码,而不是抛出异常

  • 11.2. 一致的异常层次 Spring提供了一种方便的方法,把特定于某种技术的异常,如SQLException, 转化为自己的异常,这种异常属于以DataAccessException 为根的异常层次。这些异常封装了原始异常对象,这样就不会有丢失任何错误信息的风险。 除了对JDBC异常的封装,Spring也对Hibernate异常进行了封装,把它们从一种专有的checked异常 (Hiberna

  • 目录表 错误 try..except 处理异常 引发异常 如何引发异常 try..finally 使用finally 概括 当你的程序中出现某些 异常的 状况的时候,异常就发生了。例如,当你想要读某个文件的时候,而那个文件不存在。或者在程序运行的时候,你不小心把它删除了。上述这些情况可以使用异常来处理。 假如你的程序中有一些无效的语句,会怎么样呢?Python会引发并告诉你那里有一个错误,从而处理

  • 经验表明,异常是可以分类的。C++ 草案标准提供了标准库异常层次。这个层次以基类 excephon 开始(在头文件 <exception> 中定义),该基类提供服务 what(),在每个派生类中重定义,发出相应的错误消息。 从基类 exception 可以派生直接派生类runtime_error和Iogic_error(都在头文件 <stdexcept> 中定义),每个派生类又可以派生其他类。 从

  • 问题内容: 我在一个带有旧服务层的项目上工作,如果请求的记录不存在,或者由于调用者未得到授权而无法访问,则在很多地方返回null。我说的是ID要求的特定记录。例如,类似: 最近,我一直在努力更改此API,或者用引发异常的新API进行补充。随之而来的是关于检查与未检查的异常的争论。 从JPA / Hibernate等所有设计师的笔记中,我建议未检查的异常可能是最合适的。我的观点是,不能合理地期望AP