Я новичок в 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, который я не хочу