Maison > Java > javaDidacticiel > Comment localiser l'emplacement où une exception se produit dans la pile d'exceptions en Java

Comment localiser l'emplacement où une exception se produit dans la pile d'exceptions en Java

(*-*)浩
Libérer: 2019-09-25 16:01:00
avant
3735 Les gens l'ont consulté

La pile d'exceptions est le moyen le plus important pour nous de localiser les problèmes dans la vie quotidienne et elle nous fournit une grande aide pour résoudre les problèmes. Mais nous pouvons tous avoir l’habitude de voir une exception, surtout lorsqu’il existe de nombreuses piles d’exceptions et des niveaux profonds.

Comment localiser l'emplacement où une exception se produit dans la pile d'exceptions en Java

Je me suis senti très inquiet et effrayé, je l'ai rapidement scanné et j'ai commencé à deviner quel devrait être le problème, puis. a continué à deviner sur cette base. L'ajustement du code, bien que le débogage soit également possible, fait encore perdre beaucoup de temps.

C'est parce que :

1 Nous n'avons pas lu sérieusement les informations sur la pile d'exceptions

2. . Nous ne savons pas exactement quelle est la cause du problème.

La solution est :

1. Connaître le processus de génération de pile d'exceptions.

2. Lisez patiemment les informations sur la pile.

3. Résoudre le problème

1. Processus de génération d'exception : l'erreur est signalée ci-dessus, suivez ci-dessous

Par exemple : nous avons le code de test suivant

package com.bsx.test;

public class TestException {
    public static void main(String[] args) {
        TestException exception = new TestException();
        exception.m1();
    }

    public void m1() {
        m2();
    }

    public void m2() {
        m3();
    }

    public void m3() {
        String name = null;
        System.out.println(name.length());
    }
}
Copier après la connexion

Après exécution, le résultat de sortie est le suivant :

Exception in thread "main" java.lang.NullPointerException
	at com.bsx.test.TestException.m3(TestException.java:22)
	at com.bsx.test.TestException.m2(TestException.java:17)
	at com.bsx.test.TestException.m1(TestException.java:13)
	at com.bsx.test.TestException.main(TestException.java:9)
Copier après la connexion

Nous pouvons voir que l'ordre de sortie du journal des erreurs est opposé à l'ordre d'appel. Pourquoi ?

Nous savons que les méthodes Java sont exécutées dans la pile de la machine virtuelle lorsqu'elles sont exécutées. Chaque fois qu'une méthode est exécutée, un cadre de pile sera créé et poussé dans la pile de la machine virtuelle.

Il s'agit d'une structure dernier entré, premier sorti, donc lorsqu'une erreur est signalée, l'erreur est signalée en premier par l'appelé, puis l'appelant signale une erreur dans l'ordre, par conséquent, lors de l'impression. erreurs est également que la position de rapport d'erreurs est en haut et que l'appelant est en ligne vers l'arrière. De là, nous pouvons tirer la conclusion : l’erreur est signalée ci-dessus, et ce qui suit suit.

2. Comprenez le message d'erreur : Trouvez l'emplacement de l'erreur dans notre code

D'après l'analyse ci-dessus, nous savons que l'emplacement de l'erreur est au-dessus. Dans la plupart des cas, le message d'erreur en haut indique l'endroit où l'erreur s'est produite dans notre code.

Mais parfois, le journal du haut n'est pas notre propre code, car notre code appelle le code de certains packages jar tiers. Mais cela ne nous empêche pas de localiser le problème. Nous localisons toujours le problème en fonction de l'erreur signalée ci-dessus et suivons ci-dessous. L'emplacement réel de l'erreur est toujours ci-dessus.

Ensuite, il nous suffit de trouver notre propre code de haut en bas. Le premier emplacement de notre code trouvé est l'emplacement dans notre code qui a provoqué l'erreur. Parfois, certains messages d'erreur sont évidents et nous pouvons localiser directement le nœud du problème en fonction des messages d'erreur.

Parfois, le message d'erreur n'indique pas clairement la cause de l'erreur. À ce stade, nous pouvons définir un point d'arrêt à cet endroit précis pour le déboguer.

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:csdn.net
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