Prise en charge de springMVC pour la gestion des exceptions
Quel que soit le projet que vous réalisez, la gestion des exceptions est très nécessaire et vous ne pouvez pas lancer certains codes d'erreur que seuls les programmeurs peuvent comprendre aux utilisateurs. Pour le moment, effectuez donc une gestion unifiée des exceptions pour afficher une comparaison. Des pages d'erreur conviviales sont nécessaires. . Comme les autres frameworks MVC, springMVC possède également son propre mécanisme de gestion des exceptions.
Il existe deux manières principales de gérer les exceptions fournies par springMVC. L'une consiste à implémenter directement votre propre HandlerExceptionResolver. Bien sûr, cela inclut également l'utilisation de SimpleMappingExceptionResolver et DefaultHandlerExceptionResolver que Spring nous a fournis. Contrôleur spécialisé pour la gestion des exceptions - ExceptionHandler.
1. Implémentez votre propre HandlerExceptionResolver. HandlerExceptionResolver est une interface qui a sa propre implémentation - DefaultHandlerExceptionResolver. sont interceptés, puis les codes d'erreur correspondants sont renvoyés. Bien entendu, vous pouvez également hériter de la classe DefaultHandlerExceptionResolver, puis réécrire certaines des méthodes de gestion des exceptions pour implémenter votre propre gestion des exceptions.
L'exception de résolution ci-dessus Le 4 les paramètres indiquent quel type d’exception est géré. Étant donné que la classe Exception est la classe de base de toutes les classes d'exceptions, si vous souhaitez effectuer un traitement différent en fonction de différents types d'exception, vous pouvez effectuer un traitement différent en fonction de différents types d'exception dans la méthode solveException et renvoyer différentes vues d'exception. Par exemple :
public class ExceptionHandler implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { // TODO Auto-generated method stub if (ex instanceof NumberFormatException) { //doSomething... return new ModelAndView("number"); } else if (ex instanceof NullPointerException) { //doSomething... return new ModelAndView("null"); } return new ModelAndView("exception"); } }
Après avoir défini un tel gestionnaire d'exceptions, vous devez définir un tel objet bean dans applicationContext, tel que :
En plus d'implémenter un DefaultHandlerExceptionResolver, Spring implémente également un SimpleMappingExceptionResolver , qui sont tous deux hérités de la classe abstraite AbstractHandlerExceptionResolver, et AbstractHandlerExceptionResolver implémente la méthode solveException de l'interface HandlerExceptionResolver et extrait ainsi deux méthodes abstraites, l'une est la méthode prepareResponse(exception, réponse) qui est exécutée avant la gestion des exceptions, l'autre est doResolveException. (demande, réponse, gestionnaire, exception) pour la résolution des exceptions. SimpleMappingExceptionResolver, comme son nom l'indique, utilise une relation de mappage simple pour déterminer quelle vue doit gérer le message d'erreur actuel. SimpleMappingExceptionResolver fournit la relation de mappage entre les exceptions et les vues via le type d'exception exceptionMappings, et fournit des statusCodes pour mapper le nom de la vue renvoyé par l'exception et le code retour HttpServletResponse correspondant lorsqu'une exception se produit. Et la valeur par défaut peut être spécifiée via defaultErrorView et defaultErrorCode. defaultErrorView signifie que lorsque le type d'exception correspondant n'est pas trouvé dans exceptionMappings, la vue définie par defaultErrorView sera renvoyée, ce qui signifie que lorsqu'une exception se produit, elle ne sera pas trouvée dans statusCodes. , la relation de mappage entre la vue et le code retour. Le mappage correspondant est le code retour renvoyé par défaut. Lors de l'utilisation de SimpleMappingExceptionResolver, lorsqu'une exception se produit, SimpleMappingExceptionResolver placera l'objet d'exception actuel dans son propre attribut exceptionAttribute. Lorsque exceptionAttribute n'est pas spécifié, exceptionAttribute utilise l'exception de valeur par défaut.
Ce qui suit est un exemple simple :
(1) Déclarez un bean SimpleMappingExceptionResolver dans le fichier de configuration du servlet de SpringMVC et configurez l'attribut exceptionMappings et defaultExceptionView pour spécifier la relation correspondante entre les exceptions et les vues
(2) Accédez comme suit :
(3) Objets d'exception accessibles dans les pages Jsp. Nous prenons ici la vue de retour number.jsp de NumberFormatException comme exemple :
nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <base>"> <title>My JSP 'number.jsp' starting page</title> <meta> <meta> <meta> <meta> <meta> <!-- <link rel="stylesheet" type="text/css" href="styles.css?1.1.11"> --> NumberFormatException. <br> <br> <br><span><!-- 这是JSP中的内置对象exception --></span> <br><span><!-- 这是SpringMVC放在返回的Model中的异常对象 --></span> <span><!-- HttpServletResponse返回的错误码信息,因为前面已经配置了NumberFormatException的错误码返回值为888,所以这里应该显示888 --></span>
(4)当请求/test/number.do的时候会返回定义好的number视图,返回结果如下:
2、使用@ExceptionHandler进行处理
使用@ExceptionHandler进行处理有一个不好的地方是进行异常处理的方法必须与出错的方法在同一个Controller里面
如:
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestMapping; import com.tiantian.blog.web.servlet.MyException; @Controller public class GlobalController { /** * 用于处理异常的 * @return */ @ExceptionHandler({MyException.class}) public String exception(MyException e) { System.out.println(e.getMessage()); e.printStackTrace(); return "exception"; } @RequestMapping("test") public void test() { throw new MyException("出错了!"); } }
这里在页面上访问test方法的时候就会报错,而拥有该test方法的Controller又拥有一个处理该异常的方法,这个时候处理异常的方法就会被调用
优先级
既然在SpringMVC中有两种处理异常的方式,那么就存在一个优先级的问题:
当发生异常的时候,SpringMVC会如下处理:
(1)SpringMVC会先从配置文件找异常解析器HandlerExceptionResolver
(2)如果找到了异常异常解析器,那么接下来就会判断该异常解析器能否处理当前发生的异常
(3)如果可以处理的话,那么就进行处理,然后给前台返回对应的异常视图
(4)如果没有找到对应的异常解析器或者是找到的异常解析器不能处理当前的异常的时候,就看当前的Controller中有没有提供对应的异常处理器,如果提供了就由Controller自己进行处理并返回对应的视图
(5)如果配置文件里面没有定义对应的异常解析器,而当前Controller中也没有定义的话,那么该异常就会被抛出来。
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

1. Tout d'abord, nous cliquons avec le bouton droit sur l'espace vide de la barre des tâches et sélectionnons l'option [Gestionnaire des tâches], ou cliquons avec le bouton droit sur le logo de démarrage, puis sélectionnons l'option [Gestionnaire des tâches]. 2. Dans l'interface du Gestionnaire des tâches ouverte, nous cliquons sur l'onglet [Services] à l'extrême droite. 3. Dans l'onglet [Service] ouvert, cliquez sur l'option [Ouvrir le service] ci-dessous. 4. Dans la fenêtre [Services] qui s'ouvre, cliquez avec le bouton droit sur le service [InternetConnectionSharing(ICS)], puis sélectionnez l'option [Propriétés]. 5. Dans la fenêtre des propriétés qui s'ouvre, remplacez [Ouvrir avec] par [Désactivé], cliquez sur [Appliquer] puis cliquez sur [OK]. 6. Cliquez sur le logo Démarrer, puis cliquez sur le bouton d'arrêt, sélectionnez [Redémarrer] et terminez le redémarrage de l'ordinateur.

En tant que leader du secteur, Spring+AI fournit des solutions de pointe pour divers secteurs grâce à son API puissante et flexible et ses fonctions avancées. Dans cette rubrique, nous examinerons les exemples d'application de Spring+AI dans divers domaines. Chaque cas montrera comment Spring+AI répond à des besoins spécifiques, atteint ses objectifs et étend ces LEÇONS APPRISES à une gamme plus large d'applications. J'espère que ce sujet pourra vous inciter à comprendre et à utiliser plus profondément les possibilités infinies de Spring+AI. Le framework Spring a une histoire de plus de 20 ans dans le domaine du développement logiciel, et cela fait 10 ans que la version Spring Boot 1.0 est sortie. Maintenant, personne ne peut contester ce printemps

L'anomalie dans la piscine est une tâche secondaire du jeu. De nombreux joueurs veulent savoir comment réaliser l'anomalie dans la tâche de la piscine. Tout d'abord, nous devons maîtriser la technique du tir dans l'eau avant de pouvoir l'accepter. La tâche et enquêtez sur la source de la puanteur. Plus tard, nous avons découvert qu'il y a beaucoup de cadavres sous la piscine. Jetons un coup d'œil à ce guide graphique pour les tâches inhabituelles dans la piscine dans Rise of Ronin. Guide des missions insolites dans le Ronin Rise Pool : 1. Parlez à Iizuka et apprenez la technique du tir dans l'eau. 2. Rendez-vous à l'emplacement indiqué dans l'image ci-dessous pour recevoir la tâche anormale dans le pool. 3. Allez sur le lieu de la mission, parlez au PNJ et apprenez qu'il y a une odeur nauséabonde dans la piscine voisine. 4. Allez à la piscine pour enquêter. 5. Nagez jusqu'à l'endroit indiqué sur l'image ci-dessous, plongez sous l'eau et vous trouverez de nombreux cadavres. 6. Utilisez un appareil photo pour prendre des photos du cadavre. 7

Aujourd'hui, j'aimerais vous présenter un article publié par le MIT la semaine dernière, utilisant GPT-3.5-turbo pour résoudre le problème de la détection des anomalies des séries chronologiques et vérifiant dans un premier temps l'efficacité du LLM dans la détection des anomalies des séries chronologiques. Il n'y a pas de réglage fin dans l'ensemble du processus et GPT-3.5-turbo est utilisé directement pour la détection des anomalies. Le cœur de cet article est de savoir comment convertir des séries temporelles en entrées pouvant être reconnues par GPT-3.5-turbo et comment concevoir. des invites ou des pipelines pour laisser LLM résoudre la tâche de détection des anomalies. Permettez-moi de vous présenter une introduction détaillée à ce travail. Titre de l'article image : Largelangagemodelscanbezero-shotanomalydete

Dans le processus de développement PHP, la gestion des caractères spéciaux est un problème courant, en particulier dans le traitement des chaînes, les caractères spéciaux sont souvent échappés. Parmi eux, la conversion de caractères spéciaux en guillemets simples est une exigence relativement courante, car en PHP, les guillemets simples sont un moyen courant d'encapsuler des chaînes. Dans cet article, nous expliquerons comment gérer les guillemets simples de conversion de caractères spéciaux en PHP et fournirons des exemples de code spécifiques. En PHP, les caractères spéciaux incluent, sans s'y limiter, les guillemets simples ('), les guillemets doubles ("), la barre oblique inverse (), etc. Dans les chaînes

La gestion des exceptions et les tests unitaires sont des pratiques importantes pour garantir la solidité du code C++. Les exceptions sont gérées via des blocs try-catch, et lorsque le code lève une exception, il passe au bloc catch. Les tests unitaires isolent les tests de code pour vérifier que la gestion des exceptions fonctionne comme prévu dans différentes circonstances. Cas pratique : La fonction sumArray calcule la somme des éléments du tableau et lève une exception pour gérer un tableau d'entrée vide. Les tests unitaires vérifient le comportement attendu d'une fonction dans des circonstances anormales, comme le lancement d'une exception std::invalid_argument lorsqu'un tableau est vide. Conclusion : en tirant parti de la gestion des exceptions et des tests unitaires, nous pouvons gérer les exceptions, empêcher le code de planter et garantir que le code se comporte comme prévu dans des conditions anormales.

JUnit est un framework de tests unitaires Java largement utilisé dans les projets Spring et peut être appliqué en suivant les étapes suivantes : Ajouter une dépendance JUnit : org.junit.jupiterjunit-jupiter5.8.1test Écrire des cas de test : utilisez @ExtendWith(SpringExtension.class) pour activer l'extension, utilisez les beans d'injection @Autowired, utilisez @BeforeEach et @AfterEach pour préparer et nettoyer, et marquez les méthodes de test avec @Test.

La gestion des exceptions en C++ peut être améliorée grâce à des classes d'exceptions personnalisées qui fournissent des messages d'erreur spécifiques, des informations contextuelles et effectuent des actions personnalisées en fonction du type d'erreur. Définissez une classe d'exception héritée de std::exception pour fournir des informations d'erreur spécifiques. Utilisez le mot-clé throw pour lancer une exception personnalisée. Utilisez Dynamic_cast dans un bloc try-catch pour convertir l'exception interceptée en un type d'exception personnalisé. Dans le cas réel, la fonction open_file lève une exception FileNotFoundException. La capture et la gestion de l'exception peuvent fournir un message d'erreur plus spécifique.
