Lorsque nous développons des applications Web, il est très courant que des erreurs se produisent lors du traitement des demandes. À l'heure actuelle, une gestion unifiée des exceptions est nécessaire. Cet article vous présente principalement les informations pertinentes sur la manière dont Spring Boot implémente la gestion unifiée des exceptions. Les amis dans le besoin peuvent s'y référer.
Spring Boot est livré avec un mappage d'erreurs par défaut, mais cette page d'erreur n'est pas très conviviale.
Gestion unifiée des exceptions
Définissez une classe pour la gestion unifiée des exceptions en utilisant @ControllerAdvice au lieu de la définir une par une dans chaque contrôleur.
@ExceptionHandler est utilisé pour définir le type de fonction de la fonction, et enfin mappe l'objet Exception et l'URL de la requête à l'URL.
@ControllerAdvice class ExceptionTranslator { public static final String DEFAULT_ERROR_VIEW = "error"; @ExceptionHandler(value = Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("exception", e); mav.addObject("url", req.getRequestURL()); mav.setViewName(DEFAULT_ERROR_VIEW); return mav; } }
Implémenter l'affichage de la page error.html
Créer error.html dans le répertoire des modèles.
Par exemple :
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8" /> <title>统一异常处理</title> </head> <body> <h1>Error Handler</h1> <p th:text="${url}"></p> <p th:text="${exception.message}"></p> </body> </html>
Retour en utilisant le format Json
Juste L'ajout de @ResponseBody après @ExceptionHandler peut convertir le contenu du retour de la fonction de traitement au format JSON
pour créer un objet de retour JSON, tel que :
public class ErrorDTO implements Serializable { private static final long serialVersionUID = 1L; private final String message; private final String description; private List<FieldErrorDTO> fieldErrors; //getter和setter省略 }
Une gestion des exceptions peut être ajoutée pour l'exception spécifiée
@ExceptionHandler(ConcurrencyFailureException.class) @ResponseStatus(HttpStatus.CONFLICT) @ResponseBody public ErrorDTO processConcurencyError(ConcurrencyFailureException ex) { return new ErrorDTO(ErrorConstants.ERR_CONCURRENCY_FAILURE); }
ErrorConstants.ERR_CONCURRENCY_FAILURE est un message d'exception défini.
Résumé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!