Возвращение правильного значения из @AfterThrowing - PullRequest
0 голосов
/ 29 сентября 2019

Я новичок в String, SpringBoot.Можем ли мы подавить выброшенное исключение в методе, помеченном @AfterThrowing?Я имею в виду, когда генерируется исключение, оно подавляет это и возвращает значение по умолчанию от имени вызывающего метода?Скажем, у меня есть контроллер -

@RestController
public class MyRestController implements IRestController{

    @Override
    @GetMapping("hello-throw")
    public String mustThrowException(@RequestParam(value = "name")final String name) throws RuntimeException {

        System.out.println("---> mustThrowException");
        if("Bakasur".equals(name)) {
            throw new RuntimeException("You are not welcome here!");
        }
        return name + " : Welcome to the club!!!";
    }
}

Я создал @AspectJ, как показано ниже -

@Aspect
@Component
public class MyAspect {

    @Pointcut("execution(* com.crsardar.handson.java.springboot.controller.IRestController.*(..))")
    public void executionPointcut(){

    }

    @AfterThrowing(pointcut="executionPointcut()",
            throwing="th")
    public String afterThrowing(JoinPoint joinPoint, Throwable th){

        System.out.println("\n\n\tMyAspect : afterThrowing \n\n");

        return "Exception handeled on behalf of you!";
    }
}

Если я запускаю это и нажимаю ULR как - http://localhost:8080/hello-throw?name=Bakasur Iполучит RuntimeException, но я хочу вернуть сообщение по умолчанию, например - Exception handeled on behalf of you!, можем ли мы сделать это с помощью @AfterThrowing?

Я знаю, что это можно сделать с помощью @Around, но вокруг будетбыть вызванным на каждый удар по URL, который я не хочу

1 Ответ

1 голос
/ 29 сентября 2019

То, что вы хотите сделать, это обработка исключений на контроллере.Вам не нужно создавать его самостоятельно, Spring уже поддерживает вас с некоторыми аннотациями, такими как @ExceptionHandler и @ControllerAdvice.Лучше всего последовать этому примеру: https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc#using-controlleradvice-classes

...