Les débutants en programmation prendront inévitablement du temps pour lire le message d'erreur. Pour le moment, j'ai tendance à copier le texte intégral du message d'erreur le plus rapide et à le rechercher sur Google. Cependant, si vous recherchez sur Google, vous obtiendrez des informations comme celle-là, mais vous ne pouvez pas dire que ce sont les informations correctes. Comme indiqué dans "Introduction à Ruby pour les professionnels", même si le résultat de Google a été exécuté et qu'il a semblé être résolu avec succès, il a en fait créé une faille de sécurité sérieuse. Il semble y avoir quelque chose. Donc, tout d'abord, je pense qu'il est nécessaire de pouvoir lire le message d'erreur et de pouvoir extraire le problème par vous-même. J'ai écrit cet article parce que je pensais que cela m'aiderait à me débarrasser assez rapidement des bogues et des erreurs et à comprendre la structure de Ruby.
Référencé → [Introduction à Ruby pour ceux qui souhaitent devenir des professionnels](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%92%E7% 9B% AE% E6% 8C% 87% E3% 81% 99% E4% BA% BA% E3% 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AERuby% E5% 85% A5% E9% 96% 80-% E8% A8% 80% E8% AA% 9E% E4% BB% 95% E6% A7% 98% E3% 81% 8B% E3% 82% 89% E3% 83% 86 % E3% 82% B9% E3% 83% 88% E9% A7% 86% E5% 8B% 95% E9% 96% 8B% E7% 99% BA% E3% 83% BB% E3% 83% 87% E3 % 83% 90% E3% 83% 83% E3% 82% B0% E6% 8A% 80% E6% B3% 95% E3% 81% BE% E3% 81% A7-Software-Design-plus% E3% 82 % B7% E3% 83% AA% E3% 83% BC% E3% 82% BA / dp / 4774193976)
Si une erreur se produit pendant l'exécution du programme, les données indiquant l'état de l'appel de méthode sont générées. C'est ce qu'on appelle le traçage en arrière. Ici, j'ose entrer la mauvaise syntaxe et appeler backtrace.
irb(main):001:0> puts hoge
Traceback (most recent call last):
5: from /(Chemin où Ruby est installé)/irb:23:in `<main>'
4: from /(Chemin où Ruby est installé)/irb:23:in `load'
3: from /(Chemin où Ruby est installé)/irb:11:in `<top (required)>'
2: from (irb):1
1: from (irb):2:in `rescue in irb_binding'
NameError (undefined local variable or method `hoge' for main:Object)
Ce qui précède est la sortie de backtrace car j'ai entré la mauvaise syntaxe met hoge '' dans irb (Ruby qui peut être exécuté sur le terminal). C'est une erreur très simple qui s'est produite parce que
hoge`` ne pouvait pas être reconnu comme une chaîne de caractères en la mettant entre guillemets simples (') ou doubles ("). Examinons chacun d'eux de plus près.
Premier
Traceback (most recent call last):
Cependant, ce n'est pas un message d'erreur, mais plutôt un traçage (le dernier dernier appel), c'est-à-dire une phrase qui exécute Ruby et affiche le dernier processus d'exécution jusqu'à l'erreur suivante. Et alors
5: from /(Chemin où Ruby est installé)/irb:23:in `<main>'
4: from /(Chemin où Ruby est installé)/irb:23:in `load'
3: from /(Chemin où Ruby est installé)/irb:11:in `<top (required)>'
2: from (irb):1
1: from (irb):2:in `rescue in irb_binding'
Cependant, le processus d'exécution jusqu'à l'erreur est affiché dans le flux de 5: à 1 :. Plus vous allez bas, plus vous vous rapprochez de l'erreur (en d'autres termes, plus vous vous rapprochez de la dernière). Ici, de 5: à 3:, cela signifie "processus d'exécution du programme irb", et dans le suivant 2 :, cela signifie "exécuter la première ligne de irb". J'ai vérifié 1: mais je n'ai pas compris la signification de `` sauvetage dans irb_binding ''. Cela signifie-t-il "est-il complété par la deuxième ligne d'irb?" Suivant,
NameError (undefined local variable or method `hoge' for main:Object)
Ceci est le message d'erreur. Le premier est NameError '', qui est le type de message d'erreur. Les types de messages d'erreur seront expliqués plus loin. Ce qui suit est `ʻune variable locale ou méthode non définie` hoge'for main: Object
, mais comme
hoge`` ne peut pas être reconnu comme une chaîne de caractères, il est recherché à partir d'une variable locale ou d'une constante, et il n'est pas défini. Cela signifie que · · ·
Cette fois c'est une trace arrière due à une simple erreur, donc cela ne prend que 5 lignes, mais si cela devient compliqué, des dizaines de lignes de cours d'exécution peuvent s'afficher. Même dans un tel cas, il est nécessaire de lire le contenu calmement et attentivement.
Nom de l'erreur | Aperçu |
---|---|
NameError | Se produit lors de l'utilisation de variables ou de constantes locales non définies |
NoMethodError | Se produit lorsque vous essayez d'appeler une méthode qui n'existe pas |
SyntaxError | Se produit lorsqu'il y a une erreur de syntaxe dans le code source |
TypeError | Se produit lorsqu'un objet qui n'est pas du type attendu ou qui n'a pas le comportement attendu est passé comme argument de méthode |
SystemStackError | Se produit lorsque la pile système déborde. En règle générale, cela se produit lorsque vous effectuez un appel de méthode infiniment récursif. |
LoadError | Se produit lorsque require ou load échoue |
Pour les autres erreurs, consultez la référence officielle (https://docs.ruby-lang.org/en/2.7.0/library/_builtin.html).
En tant que débutant, voir beaucoup de messages d'erreur peut être assez décourageant. Vous devez être calme et solide pour répondre aux messages d'erreur. Il peut être préférable de réfléchir à ce qu'il faut faire à l'avance au cas où vous rencontriez une erreur.
Recommended Posts