Anfänger in der Programmierung werden unweigerlich Zeit brauchen, um die Fehlermeldung zu lesen. Im Moment neige ich dazu, den vollständigen Text der schnellsten Fehlermeldung zu kopieren und zu googeln. Wenn Sie jedoch googeln, erhalten Sie solche Informationen, aber Sie können nicht sagen, dass es sich um die richtigen Informationen handelt. Wie in "Einführung in Ruby für Profis" ausgeführt, hat das Ergebnis von Google, selbst wenn es ausgeführt wurde und erfolgreich gelöst zu werden schien, tatsächlich eine schwerwiegende Sicherheitslücke geschaffen. Es scheint etwas zu geben. Daher denke ich zunächst, dass es notwendig ist, die Fehlermeldung lesen und das Problem selbst extrahieren zu können. Ich habe diesen Artikel geschrieben, weil ich dachte, er würde mir helfen, Fehler und Fehler ziemlich schnell zu beseitigen und die Struktur von Ruby zu verstehen.
Referenziert → [Einführung in Ruby für diejenigen, die Profis werden möchten](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)
Wenn während der Programmausführung ein Fehler auftritt, werden Daten ausgegeben, die den Status des Methodenaufrufs anzeigen. Dies wird als Rückverfolgung bezeichnet. Hier wage ich es, die falsche Syntax einzugeben und Backtrace aufzurufen.
irb(main):001:0> puts hoge
Traceback (most recent call last):
5: from /(Pfad, in dem Ruby installiert ist)/irb:23:in `<main>'
4: from /(Pfad, in dem Ruby installiert ist)/irb:23:in `load'
3: from /(Pfad, in dem Ruby installiert ist)/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)
Das Obige ist die Backtrace-Ausgabe, da ich die falsche Syntax "Puts Hoge" in irb eingegeben habe (Ruby, das auf dem Terminal ausgeführt werden kann). Dies ist ein sehr einfacher Fehler, der aufgetreten ist, weil hoge
nicht als Zeichenfolge erkannt werden konnte, indem es in einfache Anführungszeichen (') oder doppelte Anführungszeichen (") eingeschlossen wurde. Schauen wir uns die einzelnen Zeichen genauer an.
Zuerst
Traceback (most recent call last):
Dies ist jedoch keine Fehlermeldung, sondern ein Traceback (der letzte Aufruf), dh ein Satz, der Ruby ausführt und den letzten Ausführungsprozess bis zum nächsten Fehler anzeigt. Und dann
5: from /(Pfad, in dem Ruby installiert ist)/irb:23:in `<main>'
4: from /(Pfad, in dem Ruby installiert ist)/irb:23:in `load'
3: from /(Pfad, in dem Ruby installiert ist)/irb:11:in `<top (required)>'
2: from (irb):1
1: from (irb):2:in `rescue in irb_binding'
Der Ausführungsprozess bis zum Fehler wird jedoch im Ablauf von 5: bis 1: angezeigt. Je tiefer Sie gehen, desto näher sind Sie dem Fehler (mit anderen Worten, je näher Sie dem neuesten sind). Hier bedeutet 5: bis 3: "Ausführungsprozess des irb-Programms" und dann 2: "die erste Zeile des irb-Programms ausführen". Ich habe 1 überprüft, aber die Bedeutung von "Rettung in irb_binding" nicht verstanden. Bedeutet das "wird es durch die zweite Zeile von irb ergänzt?" Nächster,
NameError (undefined local variable or method `hoge' for main:Object)
Dies ist die Fehlermeldung. Der erste ist NameError
, was die Art der Fehlermeldung ist. Die Arten von Fehlermeldungen werden später erläutert. Das Folgende ist "undefinierte lokale Variable oder Methode" hoge "für main: Object". Da "hoge" jedoch nicht als Zeichenfolge erkannt werden kann, wird es von einer lokalen Variablen oder Konstante aus gesucht und nicht definiert. Es bedeutet, dass · · ·
Diesmal handelt es sich um eine Rückverfolgung aufgrund eines einfachen Fehlers, sodass nur 5 Zeilen erforderlich sind. Wenn dies jedoch kompliziert wird, werden möglicherweise Dutzende Zeilen des Ausführungskurses angezeigt. Auch in einem solchen Fall ist es notwendig, den Inhalt ruhig und sorgfältig zu lesen.
Fehlername | Überblick |
---|---|
NameError | Tritt auf, wenn undefinierte lokale Variablen oder Konstanten verwendet werden |
NoMethodError | Tritt auf, wenn versucht wird, eine nicht vorhandene Methode aufzurufen |
SyntaxError | Tritt auf, wenn im Quellcode ein Syntaxfehler vorliegt |
TypeError | Tritt auf, wenn ein Objekt, das nicht dem erwarteten Typ entspricht oder nicht das erwartete Verhalten aufweist, als Methodenargument übergeben wird |
SystemStackError | Tritt auf, wenn der Systemstapel überläuft. In der Regel geschieht dies, wenn Sie einen Methodenaufruf unendlich rekursiv ausführen. |
LoadError | Tritt auf, wenn die Anforderung oder das Laden fehlschlägt |
Weitere Fehler finden Sie in der offiziellen Referenz (https://docs.ruby-lang.org/en/2.7.0/library/_builtin.html).
Als Anfänger kann es sehr entmutigend sein, viele Fehlermeldungen zu sehen. Sie müssen ruhig und solide auf Fehlermeldungen reagieren. Es ist möglicherweise besser, im Voraus zu überlegen, was zu tun ist, wenn Sie auf einen Fehler stoßen.
Recommended Posts