Есть ли способ при весенней загрузке вручную вызвать исключительную информацию? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть сценарий, где уже существует контроллер, и служба генерирует исключения, которые обрабатываются через @RestControllerAdvice. Теперь у меня есть новый класс, который я представил, который вызывает методы из вышеуказанного класса обслуживания в пакетном режиме. В моем классе я должен фиксировать исключения или успехи, объединять их и возвращать. Для любых исключений, которые происходят, мне нужно сообщить статус HTTP и сообщение об ошибке. Не могли бы вы дать мне знать, если есть какой-либо способ, которым это может быть достигнуто?

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете создать свой собственный Exception класс.

public class MyException extends Exception {

    private int errorCode;
    private String errorMessage;

    public MyException(int errorCode, String errorMessage) {
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }
}

, и вы можете создать новый MyException при возникновении любого исключения и выбросить его. Затем вы получите это исключение в классе @RestControllerAdvice.

@RestControllerAdvice
public class ExceptionAdvice {

    private ErrorCodeMapper errorCodeMapper;

    @Autowired
    public ExceptionAdvice(ErrorCodeMapper errorCodeMapper) {
        this.errorCodeMapper = errorCodeMapper;
    }

    @ExceptionHandler(value = MyException.class)
    public ResponseEntity handleGenericNotFoundException(MyException e) {
        return new ResponseEntity(errorCodeMapper.getStatusCode(e.getErrorCode()));
    }
}

и классе сопоставления, как показано ниже:

@Service
public class ErrorCodeMapper {

    public static Map<Integer,HttpStatus> errorCodeMap = new HashMap<>();
    public ErrorCodeMapper(){
        errorCodeMap.put(100, HttpStatus.BAD_REQUEST);
        errorCodeMap.put(101,HttpStatus.OK);
        errorCodeMap.put(102,HttpStatus.BAD_REQUEST);
        errorCodeMap.put(103,HttpStatus.BAD_REQUEST);
    }

    HttpStatus getStatusCode(int errorCode){
        return errorCodeMap.get(errorCode);
    }
}

Вы можете получить более подробную информацию в MyException и добавить сообщение об ошибке в ResponseEntity.

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