现在我使用这个异常处理的例子:
//get an object of type curse by id
//in the service file, this findCurseById() method throws a
//CursaNotFoundException
@GetMapping("/{id}")
public ResponseEntity<curse> getCursaById (@PathVariable("id") Long id) {
curse c = curseService.findCurseById(id);
return new ResponseEntity<>(c, HttpStatus.OK);
}
//so if not found, this will return the message of the error
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler(CursaNotFoundException.class)
public String noCursaFound(CursaNotFoundException ex) {
return ex.getMessage();
}
这是我的例外
public class CursaNotFoundException extends RuntimeException {
public CursaNotFoundException(String s) {
super(s);
}
}
将来我想使用Angular作为前端,所以我真的不知道我应该如何处理后端的异常。对于这个例子,让我们假设,我应该在noCursaFound()
方法中将页面重定向到template.html页面,还是应该返回其他东西?json还是其他什么?我找不到任何有用的东西。谢谢
1条答案
按热度按时间sd2nnvve1#
我建议将错误处理保持在RESTAPI级别,而不要重定向到服务器端的另一个HTML页面。Angular客户端应用程序使用API响应,并在需要时重定向到template.html。
此外,如果后端在异常发生时返回一个
ApiError
,并显示一条消息和(可选)一个错误代码,效果会更好:并在单独的类
ExceptionHandler
中处理异常,ExceptionHandler
用@ControllerAdvice
注解: