当前位置: 首页 > 知识库问答 >
问题:

在Java中为自定义异常抛出定义的消息

哈烨熠
2023-03-14

我是一名Java编程新手(实际上已经在学习),我对如何处理不同的消息有些怀疑。

我的目标是将这些不同的消息包含在同一个类(CustomExcpse类)中,以避免在从其他类抛出新CustomExceptions的每个方法上一遍又一遍地编写相同的字符串。

到目前为止,我编码:

>

  • 一个自定义异常类,它从异常扩展而来,具有不同的消息(在示例中只有两个,但还有更多)作为Strings包含,当然还有构造函数:

    public class CustomException class extends Exception {
    
        private static final String MSG_ERR_NUM1 = "Error number 1";
        private static final String MSG_ERR_NUM2 = "Error number 2";
    
        public CustomException() { super(); }
        public CustomException(String message) { super(message); }
        public CustomException(String message, Throwable cause) { super(message, cause); }
        public CustomException(Throwable cause) { super(cause); }
    }
    

    其他不同的类,其上有一些抛出新CustomException的方法:

    public class Car {
    
      public void checkWheels() throws CustomException {
          if (comparison = true) {
               throw new CustomException(what to call??);
          }
      }
    }
    

    具有主方法的类,其中执行trycatch

     public class Driving {
    
         public static void main() {
              try {
                    //doSomething
              }
              catch (CustomException e) {
                 e.printStackTrace();
              }
         }
     }
    

    我的问题是:

    >

  • 在CustomException类上为不同的getter方法添加代码以从每个字符串中获取文本,这是一个好的过程吗?

      public String getErrorNum1() {
           return MSG_ERR_NUM1;
      }
    

    我如何从其他类的方法中包含的抛出中调用这些getter?

          if (comparison = true) {
               throw new CustomException(what here to get MSG_ERR_NUM1 or MSG_ERR_NUM2 text instead writing a String every time??);
          }
    

    提前感谢您的支持。

  • 共有1个答案

    公冶同
    2023-03-14

    您可以将所需字符串添加到异常构造函数中的“消息”中,如下所示:

    public class CustomException class extends Exception {
    
      private static final String MSG_ERR_NUM1 = "Error number 1";
      private static final String MSG_ERR_NUM2 = "Error number 2";
    
      public CustomException() { super(); }
      public CustomException(String message) { super(MSG_ERR_NUM1 + message); }
      public CustomException(String message, Throwable cause) { super(MSG_ERR_NUM1 + message, cause); }
      public CustomException(Throwable cause) { super(cause); }
    }
    

    如果您想针对不同的情况发送不同的消息,您可以使用您的公共静态最终字符串字段:

    当你抛出异常时,你给枚举原因抛出新的CustomException(CustomException.MSG_ERR_NUM2)

    但我认为为不同的错误创建不同的异常类更好、更干净。

     类似资料:
    • 我正在尝试使用Spring Boot 2.1给出的验证JWT令牌内的声明。问题是Spring总是使用默认异常消息抛出异常: 即使我创建了一个扩展ClientAuthenticationException的自定义异常,我也会收到相同的异常消息。 当JWT声明验证失败时,我想修改异常消息。这是我的配置类: 这是我的JWTClaimVerifier类: 当JWT声明验证失败时,我希望我的自定义异常消息有

    • "CATCH"应该严格地在"扔"之后叫吗?" 例1: 错误: 找不到方法“接收器”:没有方法缓存,也没有^在/tmp/739536251/main块中查找_方法。pl6第11行 例2: 无误

    • 如果 Java 提供的内置异常类型不能满足程序设计的需求,这时我们可以自己设计 Java 类库或框架,其中包括异常类型。实现自定义异常类需要继承 Exception 类或其子类,如果自定义运行时异常类需继承 RuntimeException 类或其子类。 自定义异常的语法形式为: 在编码规范上,一般将自定义异常类的类名命名为 XXXException,其中 XXX 用来代表该异常的作用。 自定义异

    • 本文向大家介绍Java抛出异常与自定义异常类应用示例,包括了Java抛出异常与自定义异常类应用示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java抛出异常与自定义异常类。分享给大家供大家参考,具体如下: 异常处理常用方法: 常用的异常处理方法有: 一、try()catch() 语句 二、throw / throws 语句 三、自定义异常类 用途: 众所周知,当程序运行过程中,如果遇

    • 我必须使用访问者设计模式编写一个应用程序,如(https://www.baeldung.com/java-visitor-pattern),一个示例元素如下所示: vistor界面看起来像下面的代码,我可能不会更改界面代码。 在Visitor(AbstractVisitor类)的实现中,如果hashtable子befehle中还没有调用类的id,我必须抛出一个“UndefinedSubroutin

    • 我知道您可以使用try-catch块对自定义消息抛出异常,例如: 但是如果我们在实用程序类中有一个方法,例如: 然后我们进入服务类,如下所示: 有没有一种方法可以自定义设置来自实用程序类方法<code>processFiles()</code>的消息及其<code>抛出的IOException</code>,而不是在该方法内部使用try-catch块?