Бросить определенные сообщения для пользовательского исключения в Java - PullRequest
0 голосов
/ 03 мая 2020

Я новичок ie программирую в Java (на самом деле уже учусь), и у меня есть некоторые сомнения относительно того, как обрабатывать разные сообщения.

Моя цель - включить в один класс (CustomException класс) эти разные сообщения, чтобы не писать снова и снова одни и те же строки для каждого метода, который генерирует новые исключения CustomException из других классов.

До сих пор я кодировал:

  1. Особое исключение CustomException класс, который расширяется от Exception и содержит разные сообщения (в этом примере только два, но их гораздо больше), включенные в виде строк, и, конечно, конструкторы:

    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); }
    }
    
  2. Другие разные классы с некоторыми методами, которые генерируют новое CustomException:

    public class Car {
    
      public void checkWheels() throws CustomException {
          if (comparison = true) {
               throw new CustomException(what to call??);
          }
      }
    }
    
  3. Класс с методом main, где выполняется try и catch:

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

Мои вопросы:

  1. Будет ли хорошей процедурой добавить код для различных методов получения в классе CustomException * 103 3 * чтобы получить текст из каждой строки?

      public String getErrorNum1() {
           return MSG_ERR_NUM1;
      }
    
  2. Как бы я назвал эти геттеры из бросков, включенных в методы других классов?

          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 Ответ

1 голос
/ 04 мая 2020

Вы можете добавить желаемую строку к «сообщению» в конструкторе исключения, например:

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); }
}

Если вы хотите выдать другое сообщение для разных ситуаций, вы используете поля public static final String:

и когда вы бросаете исключение, вы указываете причину перечисления throw new CustomException(CustomException.MSG_ERR_NUM2);

Но я думаю, что лучше и чище создавать разные классы исключений для разных ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...