как войти и отбросить весь класс - PullRequest
0 голосов
/ 06 февраля 2020

Я использую Spring.

У меня есть класс с несколькими методами. В каждом методе я должен написать:

public void method1(){
    try{
       //anything
    }
    catch(Exception e){
       Log.error(e);
       throw e;
    }
}
public void method2(){
    try{
       //anything
    }
    catch(Exception e){
       Log.error(e);
       throw e;
    }
}
public void method3(){
    try{
       //anything
    }
    catch(Exception e){
       Log.error(e);
       throw e;
    }
}
public void method4(){
    try{
       //anything
    }
    catch(Exception e){
       Log.error(e);
       throw e;
    }
}

Могу ли я написать что-то, что не нужно писать в каждом методе? Может быть аннотация?

Ответы [ 2 ]

2 голосов
/ 06 февраля 2020

Поскольку вы используете Spring, @ControllerAdvice было бы хорошим хрустящим решением для этого случая.

Все, что вам нужно сделать, - это выполнить некоторую настройку и определить свой класс обработки глобальных исключений, например,

@ControllerAdvice
public class ExceptionControllerAdvice {

    // Handles Custom exceptions. MyException in this case
    @ExceptionHandler(MyException.class)
    public ModelAndView handleMyException(MyException mex) {     
        ModelAndView model = new ModelAndView();
        ...
        return model;
    }

    // Handles all the exceptions
    @ExceptionHandler(Exception.class)
    public ModelAndView handleException(Exception ex) {     
        ModelAndView model = new ModelAndView();
        model.addObject("errMsg", "This is a 'Exception.class' message.");
        ...
        return model;     
    }
}

См. этот пост для настройки различных типов методов обработки ошибок в Spring.

0 голосов
/ 06 февраля 2020

Если вам просто нужно отбросить исключение, есть два решения:

import lombok.SneakyThrows;
@SneakyThrows //annotation on method of lombok library

import static org.apache.commons.lang3.exception.ExceptionUtils.rethrow;
rethrow() //method from Apache commons library

1)

@SneakyThrows(Exception.class) //without specifying will rethrow all exceptions
public void method1(){
       //anything
}

2)

public void method1(){
    try{
       //anything
    }
    catch(Exception e){
       Log.error(e);
       rethrow(e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...