Является ли плохой практикой передавать exception в качестве аргумента методу в java

#java #exception

#java #исключение

Вопрос:

У меня есть метод, который должен выполнять откат, если в службе возникает исключение. В блоке исключений служба отката выдает исключение при сбое. Я создал службу для отката, но я передаю exception в качестве аргумента второму методу. это плохая практика?

 public static void method1() {
    try{
       //do something that can throw exception
    } catch (Exception e) {
         method2(data, e);
      }
}

public static void method2(String data, CustomException ce) {
    try{
     // rollback service that could fail
    } catch(Exception e) {
        log.warn("rollback failed!!!");
         ce.addSuppressed(e);
      }
 }
  

Комментарии:

1. «это плохая практика?» Нет.

2. Единственная причина, по которой я спросил, заключалась в том, что кто-то сказал мне не делать этого и попросил просто поместить это везде, где должен был произойти откат.

Ответ №1:

В конце концов, Exception s — это обычные объекты Java с добавленным свойством, согласно которому они могут быть выброшены. Если бы мы отрицали Exception s в качестве параметров, это лишило бы нас возможности, например, иметь централизованные методы-обработчики для Exception s (концепция, найденная, например, в JavaEE ExceptionMapper ). Если бы мы запретили использование Exception s в качестве параметров, мы, скорее всего, нарушили бы принцип DRY и, скорее всего, принцип разделения проблем. Оба из которых могут привести к усложнению чтения и поддержки кода.

Кроме того, если один из наших методов принимает Object (или Object... или Collection<Object> , …) в качестве параметра, мы не можем предотвратить, что, возможно, Exception передается в качестве параметра.

В заключение, я не вижу причин, по которым передача Exception в качестве параметра метода должна быть плохой практикой.