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.
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()); } }
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)
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!