Cet article se concentre sur certains concepts de mécanisme d'exception en Java. Le but de la rédaction de cet article est de me faciliter pour me souvenir de ces choses après une longue période.
1. Mécanisme d'exception
1.1 Le mécanisme d'exception fait référence à la façon dont le programme le gère lorsqu'une erreur se produit. Plus précisément, le mécanisme d'exception fournit un canal sécurisé pour la sortie du programme. Lorsqu'une erreur se produit, le processus d'exécution du programme change et le contrôle du programme est transféré au processeur d'exception.
1.2 La façon traditionnelle de gérer les exceptions est que la fonction renvoie un résultat spécial pour indiquer qu'une exception se produit (généralement ce résultat spécial est communément connu comme il est), et le programme appelant la fonction est responsable de la vérification et de l'analyse des résultats renvoyés par la fonction. Cela a les inconvénients suivants: par exemple, si la fonction renvoie -1, cela signifie qu'une exception se produit, mais si la fonction veut renvoyer la valeur correcte de -1, elle sera confuse; La lisibilité est réduite et le code du programme est mélangé avec le code qui gère l'exception; Le programme appelant la fonction analyse l'erreur, ce qui nécessite que le programmeur client ait une compréhension approfondie des fonctions de bibliothèque.
1.3 Processus de gestion des exceptions
1.3.1 Lorsqu'une erreur est rencontrée, la méthode se termine immédiatement et ne renvoie pas de valeur; En même temps, un objet d'exception est lancé.
1.3.2 Le programme qui appelle cette méthode ne continuera pas à exécuter, mais recherche un gestionnaire d'exceptions qui peut gérer l'exception et exécuter le code.
2 Classification des exceptions
2.1 Classification des exceptions
2.1.1 La structure de succession des exceptions: la classe de base est jetable, une erreur et des exceptions héritables, RuntimeException et ioException, etc., et le RuntimeException spécifique hérite de RuntimeException.
2.1.2 Erreur et RuntimeException et leurs sous-classes deviennent des exceptions non contrôlées, et d'autres exceptions deviennent des exceptions vérifiées.
2.2 Caractéristiques de chaque type d'exception
2.2.1 Système d'erreur Le système de classe d'erreur décrit les erreurs internes et l'épuisement des ressources dans le système d'exploitation Java. Les applications ne doivent pas lancer des objets de ce type (généralement lancées par des machines virtuelles). Si une telle erreur se produit, rien d'autre ne peut être fait, sauf pour essayer de sortir le programme en toute sécurité. Par conséquent, lors de la conception de la programmation, vous devez accorder plus d'attention au système d'exception.
2.2.2 Système d'exception Le système d'exception inclut le système RuntimeException et d'autres systèmes non RuntimeException
2.2.2.1 RuntimeException Le système RuntimeException inclut la conversion de type mauvais, l'accès à la baisse du tableau, tente d'accéder aux pointeurs nuls, etc. Le principe de la gestion de RuntimeException est: si un RuntimeException se produit, il doit être une erreur d'un programmeur. Par exemple, les exceptions d'accès hors limites de la baisse peuvent être évitées en vérifiant les indices de tableau et les limites des tableaux.
2.2.2.2 Autres exceptions (ioException, etc.) comme celle-ci sont généralement des erreurs externes, comme essayer de lire des données de la fin du fichier, etc. Ce n'est pas une erreur du programme lui-même, mais une erreur externe qui se produit dans l'environnement d'application.
2.3 Différences par rapport à la classification des exceptions C ++
2.3.1 En fait, le nom de classe de RuntimeException dans Java n'est pas approprié, car toute exception se produit au moment de l'exécution. (Les erreurs qui se produisent pendant la compilation ne sont pas des exceptions. En d'autres termes, les exceptions sont de résoudre les erreurs qui se produisent pendant l'exécution du programme).
2.3.2 Logic_error en C ++ équivaut à RuntimeException en Java, tandis que runtime_error équivaut à des exceptions de types de non-runtimeException en Java.
3. Comment utiliser des exceptions
3.1 Declare Method Throws Exception
3.1.1 Syntaxe: lancers (omis)
3.1.2 Pourquoi devons-nous déclarer une méthode pour lancer une exception? La question de savoir si une méthode lance une exception est aussi importante que le type de valeur de retour de la méthode. En supposant que la méthode lance une exception, elle ne déclare pas que la méthode lancera une exception, puis le programmeur client peut appeler cette méthode sans écrire de code pour gérer l'exception. Ensuite, une fois qu'une exception se produit, il n'y a pas de contrôleur d'exception approprié pour résoudre cette exception.
3.1.3 Pourquoi l'exception jetée est-elle nécessairement une exception vérifiée? RuntimeException et une erreur peuvent être générées dans n'importe quel code. Ils n'ont pas besoin d'être jetés par le programmeur. Une fois qu'une erreur se produit, l'exception correspondante sera automatiquement lancée. L'exception vérifiée est lancée par le programmeur, qui est divisé en deux situations: le programmeur client appelle la fonction de bibliothèque qui lance l'exception (l'exception de la fonction de bibliothèque est organisée par le programmeur de bibliothèque); Le programmeur client lance l'exception par lui-même en utilisant l'instruction Throw. Lors de la rencontre d'une erreur, les programmeurs sont généralement impuissants; Lors de la rencontre d'une RuntimeException, il doit être qu'il existe une erreur logique dans le programme et que le programme doit être modifié (équivalent à une méthode de débogage); Seule l'exception vérifiée est ce dont les programmeurs se soucient, et le programme ne doit et ne doit que lancer ou gérer l'exception vérifiée.
3.1.4 Remarque: La méthode de sous-classe couvrant une certaine méthode de la classe parent ne peut pas lancer plus d'exceptions que la méthode de la classe parent. Par conséquent, parfois lors de la conception de la méthode de la classe parent, des exceptions seront déclarées lancées, mais le code réel pour implémenter la méthode ne lance pas des exceptions. Le but de cela est de faciliter la méthode de sous-classe pour écraser la méthode de la classe parent.
3.2 Comment lancer une exception
3.2.1 Syntaxe: lancer (omis)
3.2.2 Quelle exception est lancée? Pour un objet d'exception, le type d'objet est vraiment utile lorsque l'exception est du type d'objet, et l'objet d'exception lui-même n'a pas de sens. Par exemple, si le type d'un objet d'exception est classcastException, ce nom de classe est la seule information utile. Par conséquent, lors du choix de l'exception à lancer, la chose la plus importante est de sélectionner le nom de classe de l'exception qui peut expliquer clairement la situation d'exception.
3.2.3 Il y a généralement deux constructeurs pour les objets d'exception: l'un est un constructeur sans paramètres; L'autre est un constructeur avec une chaîne, qui sera utilisé comme description supplémentaire de cet objet d'exception en plus du nom de type.
3.2.4 Créez votre propre exception: Lorsqu'aucune des exceptions intégrées de Java ne peut expliquer clairement la situation des exceptions, vous devez créer votre propre exception. Il convient de noter que la seule chose utile est les informations sur le nom de type, alors ne dépensez pas de l'énergie pour la conception de classes d'exception.
3.3 Capture des exceptions Si une exception n'est pas traitée, alors pour un programme d'interface non graphique, le programme sera abandonné et les informations d'exception de sortie; Pour un programme d'interface graphique, les informations d'exception seront également sorties, mais le programme ne s'aborte pas, mais revient à la boucle de traitement de l'interface utilisateur.
3.3.1 Syntaxe: les modules de contrôleur d'essai, de prise et enfin (omis) doivent être immédiatement derrière le bloc d'essai. Si une exception est lancée, le mécanisme de contrôle des exceptions recherchera le premier contrôleur dont les paramètres correspondent au type d'exception, puis entrera la clause Catch et pensent que l'exception a été contrôlée. La recherche du contrôleur s'arrêtera également une fois la clause de capture terminée.
3.3.1.1 Catchez plusieurs exceptions (notez la syntaxe et l'ordre de capture) (omis)
3.3.1.2 Processus d'utilisation et de gestion des exceptions Enfin (omis)
3.3.2 Que fait la gestion des exceptions? Pour Java, en raison de la collecte des ordures, la gestion des exceptions ne nécessite pas de recyclage de mémoire. Cependant, il existe encore des ressources que les programmeurs doivent collecter, tels que les fichiers, les connexions réseau et les images.
3.3.3 La méthode devrait-elle lancer une exception ou prendre une exception dans la méthode? Principe: capture et manipulez des exceptions qui savent gérer, et transmettent des exceptions qui ne savent pas comment gérer
3.3.4 Jetez à nouveau une exception
3.3.4.1 Pourquoi est-ce que je lance une exception à nouveau? À ce niveau, seule une partie du contenu peut être traitée et un certain traitement doit être achevé dans un environnement de niveau supérieur, donc une exception doit être jetée à nouveau. Cela permet à chaque étape du gestionnaire d'exceptions de gérer les exceptions qu'il peut gérer.
3.3.4.2 Le bloc de capture correspondant au même bloc d'essai sera ignoré et l'exception lancée entrera dans un niveau supérieur.
4 autres questions sur les exceptions
4.1 Exception de surutilisation Tout d'abord, il est très pratique d'utiliser des exceptions, donc les programmeurs ne sont généralement plus disposés à écrire des codes pour gérer les erreurs, mais jetez simplement une exception. C'est faux. Pour les erreurs complètement connues, le code qui gère ces erreurs doit être écrit pour augmenter la robustesse du programme. De plus, l'efficacité du mécanisme anormal est très médiocre.
4.2 Diviser les exceptions des erreurs ordinaires. Pour les erreurs ordinaires, les codes qui traitent de telles erreurs devraient être écrits pour augmenter la robustesse du programme. Des exceptions ne sont requises que pour les erreurs d'exécution indéterminables et prédites externes.
4.3 Les informations contenues dans les objets d'exception de manière générale, les seules informations utiles pour les objets d'exception sont les informations de type. Mais lorsque vous utilisez un constructeur de chaîne d'exception, cette chaîne peut également être utilisée comme informations supplémentaires. Appeler les méthodes GetMessage (), ToString () ou PrintstackTrace () de l'objet exceptionnel peut obtenir des informations supplémentaires, le nom de classe et les informations de pile d'appels respectivement. Et ce dernier contient des informations qui sont un superset de la première.
Exceptions couramment utilisées:
Opérations non soutenues par une conception non étayée
IllégalargumentException des paramètres illégaux
IndexoutofboundSException index sortant
État illégal illégaléexception
Il existe une certaine différence entre les avertissements anormaux et ordinaires. Lorsqu'une exception se produit dans l'application, le flux normal d'instruction du programme d'exécution sera interrompu. C'est-à-dire que le code après une exception ne sera pas exécuté correctement. Il déclenche même l'opération de retour de la base de données.
Dans la plate-forme de développement Java, les exceptions incluent des exceptions prédéfinies et des exceptions personnalisées. Ces deux types d'exception se complètent. En tant que développeur de programme qualifié, soyez bon à utiliser des exceptions dans les applications. Cela peut améliorer l'interactivité de l'application. Dans le même temps, il s'agit également d'une condition préalable pour assurer le fonctionnement normal de l'application. Par conséquent, la gestion des exceptions est très importante pour développer une excellente application. Pour cette raison, l'auteur estime que les développeurs de programmes devraient avoir une compréhension approfondie des exceptions communes dans les applications Java. Ce n'est que lorsque vous comprenez ces exceptions courantes que vous pouvez bien gérer les exceptions personnalisées.
1. Types et causes des exceptions communes.
En ce qui concerne les exceptions communes dans les applications Java, l'auteur estime que les développeurs de programmes devraient les comprendre de deux aspects. Tout d'abord, nous devons savoir quelles existent les exceptions de l'application Java communes, et deuxièmement, nous devons savoir quelles causes peuvent provoquer cette exception. Cela nécessite non seulement les gestionnaires de programme qu'ils prêtent attention à l'accumulation dans leur travail quotidien, mais doivent également collecter des informations sur d'autres canaux si nécessaire. L'auteur effectuera une analyse à ce sujet, en espérant qu'il vous aidera à tous les développeurs de programmes.
1. SQLEXception: Fonctionne la classe d'exception de la base de données.
La plupart des applications Java d'aujourd'hui reposent sur des bases de données à exécuter. Cette classe sera déclenchée si une erreur se produit lorsqu'une application Java communique avec la base de données. Dans le même temps, les informations d'erreur de base de données seront affichées à l'utilisateur via cette classe. En d'autres termes, cette classe d'exception de base de données de fonctionnement est un pont pour la transmission des informations d'exception entre la base de données et l'utilisateur. Par exemple, l'utilisateur insère désormais des données dans le système et stipule qu'un certain champ doit être unique dans la base de données. Lorsque l'utilisateur insère des données, si la valeur de ce champ est répétée avec l'enregistrement existant, il viole les contraintes d'unicité de la base de données, et un message d'exception sera publié de la base de données. Ces informations peuvent ne pas être visibles pour les utilisateurs car elles se produisent au niveau de la base de données. À l'heure actuelle, cette classe d'exception de base de données d'opération capturera les informations d'exception de la base de données et transmettra les informations d'exception au premier plan. De cette façon, l'utilisateur de la réception peut analyser la cause de l'erreur en fonction de ces informations d'exception. C'est l'objectif principal de cette classe d'exception de base de données d'exploitation. Dans les applications Java, cette classe sera déclenchée lorsque toutes les opérations de base de données se produisent des exceptions. Toutes les informations rapides de l'application Java elle-même sont souvent trop générales pour le moment, disant simplement qu'il y a une erreur d'interaction avec la base de données et qu'il n'a pas beaucoup de valeur de référence. À l'heure actuelle, les informations rapides de la base de données sont plus précieuses.
2. ClassCastException: exception de conversion de type de données.
Dans les applications Java, le type de données doit parfois être converti. Cette conversion comprend des conversions affichées et des conversions implicites. Cependant, peu importe la façon dont vous vous convertissez, vous devez répondre à une condition préalable, à savoir la compatibilité des types de données. Si ce principe est violé pendant le processus de conversion des données, l'exception de conversion de type de données sera déclenchée. Par exemple, dans les applications maintenant, les développeurs doivent convertir les données de date de type de caractère en données de type date qui peuvent être acceptées par la base de données. Pour le moment, ils n'ont qu'à le contrôler dans l'application de premier plan, et il n'y aura généralement aucun problème. Cependant, si l'application de premier plan n'a pas de contrôle pertinent, comme l'utilisateur n'indique que les informations de mois et de jour lors de la saisie de la date, mais ne dispose pas d'informations de l'année. À l'heure actuelle, une exception apparaîtra lorsque l'application effectue une conversion de type de données. Selon mon expérience, les exceptions de conversion du type de données entraînent plus d'exceptions dans le développement d'applications et sont également des exceptions de niveau relativement bas. Parce que dans la plupart des cas, un certain contrôle forcé sur les types de données peut être effectué dans la fenêtre d'application. Autrement dit, avant que le type de données ne soit converti, la compatibilité du type de données est assurée. Dans ce cas, il ne sera pas facile de provoquer des exceptions de conversion de type de données. Si dans des champs qui autorisent uniquement les types numériques, il est possible de définir des caractères autres que des valeurs numériques qui ne sont pas autorisées à entrer. Bien qu'avec le mécanisme de gestion des exceptions, l'application ne sera pas exécutée de manière incorrecte. Cependant, dans le développement réel, nous devons toujours prévoir autant que possible les causes des erreurs et essayer d'éviter les anomalies.
3. NumberFormatexception: Exception lancée lorsqu'une chaîne est convertie en type numérique.
Pendant le processus de conversion du type de données, s'il s'agit d'un problème qui se produit pendant le processus de conversion de caractère en conversion numérique, une exception indépendante est utilisée dans le programme Java, à savoir NumberFormatexception. Par exemple, lorsque les données de type caractéristiques "123456" sont converties en données numériques, elle est autorisée. Cependant, si les données de type de caractères contiennent des caractères non numériques, tels que 123 # 56, une exception apparaîtra lorsqu'elle est convertie en type numérique. Le système attrapera cette exception et le traitera.
Il existe de nombreuses classes d'exception courantes dans les applications Java. Si l'exception de classe correspondante n'est pas trouvée, certaines exceptions de classe ne sont pas autorisées à être accessibles, le fichier a mis fin à l'exception, le fichier n'a pas trouvé d'exception, le champ n'a pas trouvé d'exception, etc. Généralement, les développeurs du système peuvent juger le type de l'exception en cours en fonction de ce nom d'exception. Bien qu'il soit bon, un bon souvenir n'est pas aussi bon qu'un mauvais stylo. Lorsque cela est nécessaire (surtout lorsqu'il y a une exception personnalisée), le développeur du programme a enfin une liste d'exception à portée de main. Dans ce cas, que la demande découvre un problème lors du débogage ou reçoit une plainte de l'utilisateur pendant le fonctionnement, vous pouvez trouver la cause de l'exception en fonction du nom d'exception dans le temps. Cela permet de résoudre les exceptions dans les plus brefs délais et restaure le fonctionnement normal de l'application. Cette mesure est utilisée depuis de nombreuses années et est très efficace.
2. Suggestions pratiques pour la gestion des exceptions.
Pour les exceptions de base de données de fonctionnement, les applications Java ne fournissent qu'une classe d'exception. Par conséquent, le fait de s'appuyer uniquement sur les informations d'erreur des applications Java ne peut souvent pas aider le personnel d'application à éliminer les causes de l'erreur. Vous ne pouvez spécifier que si cette exception est causée par une erreur d'application ou une erreur de base de données. Afin de spécifier davantage la cause du problème, il est préférable d'expliquer la cause spécifique lors de la définition des exceptions au niveau de la base de données. Par exemple, l'application de premier plan peut appeler les fonctions ou procédures de la base de données. À l'heure actuelle, faire du bon travail dans la fonction ou le processus de la base de données peut expliquer la cause spécifique d'une certaine exception. Par exemple, lors de la génération d'un autre tableau basé sur une certaine table de base, un certain champ ne peut pas être vide, etc. Après avoir expliqué ces informations d'exception clairement, si vous rencontrez vraiment des exceptions similaires, l'exploitation de la classe d'exception de la base de données inversera les informations d'exception de la base de données à l'utilisateur frontal. Cela aidera les utilisateurs à trouver la cause du problème et à le corriger dans les plus brefs délais. Bien sûr, cela nécessite une coordination entre les programmeurs Java et les concepteurs de bases de données.
Deuxièmement, il convient de noter que les exceptions ne sont pas la norme. En d'autres termes, la plupart des anomalies peuvent être éliminées par la prévoyance et la prévention raisonnables de la prémisse. S'il est conçu pour les opérations à quatre points, vous pouvez restreindre la saisie de 0 valeurs dans le champ ex-numéro dans la fenêtre d'application de premier plan pour éliminer les exceptions possibles pendant le fonctionnement de l'application. Cependant, cela oblige souvent les développeurs d'applications à avoir une riche expérience de travail et à avoir une logique de réflexion stricte. Bien que cela soit difficile, l'auteur estime que les développeurs de programmes devraient toujours travailler dur à cet égard, plutôt que de laisser toujours les utilisateurs comme vos témoignages pour permettre aux utilisateurs de découvrir des bogues de conception dans l'application. L'auteur estime que les exceptions ne peuvent être lancées que lorsque certains facteurs sont vraiment hors de contrôle des programmeurs. Si les développeurs d'applications peuvent être conscients de cette erreur, mais ne y prêtent toujours pas attention ou ne prennent pas de mesures efficaces pour empêcher cette anomalie, l'auteur ne le permettra pas.
Arithmeticexception (exception avec diviseur 0), bufferOverflowException (exception de débordement de tampon), tamperUnderflowException (exception de tampon sous-flux), indexoutofboundsexception), videstacKexception (exception de pile à vide), illégalargumentexception (paramètre de paramètre illégal). NEVATIVEARRAYSIZEEException, NosuchementElementException, SecurityException, SystemException, UnclaredthrowableException
1. Java.lang.nullpointerException
L'explication de l'exception est "le programme rencontre un pointeur nul". Autrement dit, cela signifie appeler un objet non initialisé ou un objet qui n'existe pas, c'est-à-dire confondant l'initialisation du tableau avec l'initialisation des éléments du tableau. L'initialisation d'un tableau consiste à allouer l'espace requis au tableau. Les éléments du tableau initialisé ne sont pas instanciés et sont toujours vides, donc chaque élément doit être initialisé (si vous voulez l'appeler)
2. Java.lang.classnotfoundException
L'explication de l'exception est "la classe spécifiée n'existe pas".
3. Java.lang.arithmeticexception
L'explication de cette exception est "Exception de fonctionnement mathématique". Par exemple, si une opération comme la division par zéro apparaît dans un programme, une telle exception se produira.
4. Java.lang.arrayIndexoutofboundSexception
L'explication de l'exception est "les indices de tableau sont hors limites". La plupart des programmes ont désormais des opérations sur les tableaux. Par conséquent, lorsque vous appelez les tableaux, vous devez vérifier attentivement pour voir si les indices que vous appelez dépassent la plage du tableau. D'une manière générale, il n'est pas facile de commettre de telles erreurs en appelant des appels d'affichage (c'est-à-dire directement des constantes pour les indices), mais implicite (c'est-à-dire en utilisant des variables pour représenter les indices) font souvent des erreurs. Il existe une autre situation où la durée du tableau défini dans le programme est déterminée par certaines méthodes spécifiques et n'est pas déclarée à l'avance. Pour le moment, il est préférable de vérifier la longueur du tableau d'abord pour éviter cette exception.
5. Java.lang.ILLEGALARgumentException
L'explication de cette exception est "l'erreur de paramètre de la méthode", comme les trois valeurs de la méthode g.setColor (int Red, int verte, int bleu). S'il y en a plus de 255, cette exception se produira également. Par conséquent, une fois cette exception trouvée, ce que nous devons faire est de vérifier rapidement s'il y a une erreur dans le paramètre passant dans l'appel de la méthode.
6. Java.lang.ILLEGALACCESSException
L'explication de cette exception est "aucune autorisation d'accès". Cette exception se produira lorsque l'application souhaite appeler une classe, mais la méthode actuelle n'a pas d'autorisations d'accès à la classe. Lorsque vous utilisez un package dans le programme, vous devez prêter attention à cette exception, exception et java
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!