Maison > Java > javaDidacticiel > Explication détaillée de l'exemple de code de gestion unifiée des exceptions Spring Boot

Explication détaillée de l'exemple de code de gestion unifiée des exceptions Spring Boot

黄舟
Libérer: 2017-03-09 10:39:33
original
1839 Les gens l'ont consulté

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;
 }
}
Copier après la connexion

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>
Copier après la connexion

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省略
}
Copier après la connexion

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);
 }
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal