[Java] Lisez-vous correctement le message d'erreur? [Comment lire la trace de la pile]

introduction

Lorsqu'un programme écrit en dur génère une erreur, lisez-vous correctement le message d'erreur? Vous êtes-vous enfui en disant "Parce que c'est anglais: confondu:"? Au fait, je ne pense pas pouvoir apprendre à lire les erreurs lors de la formation. Tous les messages d'erreur sont en anglais, mais vous pouvez les déchiffrer correctement en maintenant les points enfoncés. (Parce que c'est en anglais) Ne vous enfuyez pas, faites-vous face </ b> </ font>

Ordre de lecture des messages d'erreur

Lisons-le étape par étape en utilisant l'exemple d'erreur suivant: notebook_with_decorative_cover:

  • Le contenu est pour les nouveaux arrivants: les débutants: je vais donc lire les erreurs à un rythme lent.

Exemple de programme.java


package section01;

import java.util.Random;

/*
 *Génération de séquences aléatoires
 *Ordre: modèle 2N
 */
public class practice4 {

	public static int NUM = 10;
	
	public static void main(String[] args) {
		int[] numArray = new int[0]; /*Déclarer un tableau avec zéro élément*/
		Random random = new Random();
		
		int i, randomNum;
		for(i = 0 ; i < NUM ; i++) {
			numArray[i] = i; /*Ici, l'exception se produit*/
		}
		
		for(i = NUM-1 ; i > 1 ; i--) {
			randomNum = random.nextInt(NUM-1);
			int tmp = numArray[randomNum];
			numArray[randomNum] = numArray[i];
			numArray[i] = tmp;
		}
		
		for(i = 0 ; i < NUM ; i++) {
			System.out.println(Integer.toString(numArray[i]));
		}
	}
}

Exemple d'erreur


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at section01.practice4.main(practice4.java:20)★

1) Revenez lentement au point de départ du message d'erreur

Lorsque tous les messages d'erreur sont sortis, le curseur est en bas. Dans l'exemple, c'est la partie de ★ à côté de (practice4.java:20). Alors, faites défiler l'écran et revenez lentement au point de départ où le message d'erreur a été émis: arrow_left: Une fois que vous vous y serez habitué, vous pourrez revenir immédiatement. Jetez un œil à la vue d'ensemble en faisant le tour de la souris: mouse_three_button: wheel. Au fait, puisqu'il s'agit d'un échantillon, il se termine par 2 lignes, mais si vous utilisez le framework, vous en verrez plus: ordinateur:

2) Recherchez les caractères «Exception» et «Erreur» au début

Dans l'exemple, c'est là que ʻException dans le thread "main" java.lang.ArrayIndexOutOfBoundsException: 0`. Autre que ça,

  • NullPointerException
  • NumberFormatException
  • OutOfMemoryError

etc. Tel est le contenu de l'erreur. Cela n'a pas d'importance si cela n'a pas de sens, alors cherchez d'abord Exception / Erreur. L'important est de reconnaître que «je ne sais pas ce que cela signifie, mais j'obtiens une erreur appelée NullPointerException».

3) Trouvez le nom de classe du programme que vous avez exécuté

La plupart des langages de programmation, pas seulement Java, afficheront l'emplacement de l'erreur comme "quel fichier et quelle ligne". Alors commencez par trouver le nom de classe du programme que vous avez exécuté: exclamation: Dans l'exemple, c'est le lieu de ʻat section01.practice4.main (practice4.java:20) `. Si tu viens jusqu'ici

--Il y a une erreur à la ligne 20 de practice4.java.

  • Le contenu de l'erreur est "ArrayIndexOutOfBoundsException".

Maintenant que vous connaissez les deux, modifiez le programme pour éliminer l'exception ʻArrayIndexOutOfBoundsException qui se produit à la ligne 20 de practice4.java`: stuck_out_tongue: Si vous ne comprenez pas, demandons: "L'exception de △△ s'est produite sur la nième ligne de ○○. Comment puis-je l'éliminer?"

Message d'erreur

Si vous effectuez une recherche sur Google à chaque fois, vous vous en souviendrez progressivement, vous n'aurez donc pas à chercher sur Google à chaque fois. Ensuite, en regardant simplement une partie du mot, vous pouvez avoir une idée du type d'erreur que vous faites. De plus, la plupart des langages de programmation ou SQL utilisent souvent des mots anglais similaires aux messages d'erreur, ce qui permet de deviner quelle que soit la langue.

Vous pourrez comprendre le contenu de l'erreur même si vous n'en comprenez pas le sens ou la lecture: star:

Recommended Posts