[RAILS] [Ruby] Ausnahmebehandlung in Funktionen

Einführung

Dieser Artikel ist eine Ergänzung zu vielen Ausnahmebehandlungen. Insbesondere werde ich das Ergebnis der Überprüfung des nicht im Artikel eingeführten Musters belassen.

Umgebung

Verwendung in Funktionen

In der Funktion können Sie wie folgt schreiben.

def method
  puts "hoge"
  a = 1 / 0
rescue ZeroDivisionError
  puts $!
end

Es ist eine Form, die Anfang und Ende weglässt. Im Falle einer solchen Form

a = 1 / 0

Ist selbstverständlich, dass ein Fehler verursacht wird. Aber was wenn:

def method
  #Riesige Verarbeitung 1
  #Verarbeitung, die wahrscheinlich einen Fehler verursacht
  #Riesige Verarbeitung 2
rescue StandardError
  puts $!
end

Übrigens ist es zweifelhaft, dass die Person, die diesen Code sieht, sofort die Verarbeitung sehen kann, die wahrscheinlich einen Fehler verursacht. In diesem Fall sollten Sie es wagen, Anfang und Ende zu schreiben.

def method
  #Riesige Verarbeitung 1
  begin
    #Verarbeitung, die wahrscheinlich einen Fehler verursacht
  rescue StandardError
    puts $!
  end
  #Riesige Verarbeitung 2
end

Auf diese Weise können Sie sehen, wo der Fehler wahrscheinlich auftritt, und Sie müssen nicht viel scrollen, um die Rettung zu sehen. Übrigens, wenn Sie mit Rettung zurückkehren, wird die große Menge von Prozess 2 nicht verarbeitet. Wenn Sie also definitiv möchten, dass er verarbeitet wird, stellen Sie sicher, dass er verarbeitet wird.

def method
  #Riesige Verarbeitung 1
  begin
    #Verarbeitung, die wahrscheinlich einen Fehler verursacht
  rescue StandardError
    puts $!
    return
  ensure
    #Riesige Verarbeitung 2(Wird auch dann verarbeitet, wenn die Rettung zurückgekehrt ist)
  end
end

Wenn es mehrere Prozesse gibt, die wahrscheinlich einen Fehler verursachen, ist es einfach, sie am Ende der Funktion zusammenzuschreiben. Das Schreiben beginnt, rettet und endet jedes Mal, wenn es weniger lesbar ist. Alles ist richtig.

def method
  #Verarbeitung, die wahrscheinlich verschiedene Fehler verursacht

  #Andere Verarbeitung

rescue ZeroDivisionError, ArgumentError
  puts $!
rescue StandardError
  puts $!
  puts $@
end

Übrigens, wenn Sie zuerst StandardError schreiben, wird dieser Typ den größten Teil der Fehlerbehandlung übernehmen. Beginnen wir also mit der Kinderklasse.

Recommended Posts

[Ruby] Ausnahmebehandlung in Funktionen
Behandlung von Ruby-Ausnahmen
Ruby-Ausnahmebehandlung
Informationen zur Behandlung von Ruby-Ausnahmen
Ausnahmebehandlungstechniken in Java
Ausnahmebehandlung
Ausnahmebehandlung Ausnahme
Informationen zur Ausnahmebehandlung
Informationen zur Ausnahmebehandlung
[Ruby] Ausnahmebehandlung, falls angegeben, zurückgeben
[Java] Ausnahmebehandlung
Schwer in Rubin! ??
Tipps zur Behandlung von gRPC-Fehlern in Ruby
☾ Java / Ausnahmebehandlung
Informationen zur Behandlung von Java-Ausnahmen
Behandlung von Java-Ausnahmen
Fragen in Java-Ausnahmebehandlung werfen und versuchen-fangen
Praxis der Ausnahmebehandlung (ArithmeticException)
Azure funktioniert in Java
Spring Boot-Ausnahmebehandlung
Ausgabedreieck in Ruby
Fehlerbehandlung mit Graphql-Ruby
Arten von Variablen in Ruby
Schneller Popcount in Ruby
Umgang mit Datum und Uhrzeit in Ruby. Verwenden Sie Datum und Uhrzeit richtig.
ABC177 - E in Ruby lösen
Klassen, die eine Ausnahmebehandlung erfordern
Überprüfen Sie JWT-Token in Ruby
Javas erste Ausnahmebehandlung (Denkmal)
[Java] Praxis der Ausnahmebehandlung [Ausnahme]
Schreiben Sie die Klassenvererbung in Ruby
[Java] Informationen zur Behandlung von Try-Catch-Ausnahmen
Ganzzahlen, die in Ruby 2.4 zu Ganzzahlen zusammengefasst sind
Verwenden Sie Ruby-Variablen in Javascript.
Verwendungsregeln für die Behandlung von Java-Ausnahmen
Multiplikation innerhalb eines Ruby-Arrays
Über reguläre Ausdrücke in Ruby
Erstellen Sie Azure-Funktionen in Java
Behandlung von Zeilenanfang und Zeilenende in regulären Ausdrücken in Ruby
NCk mod p in Ruby
Lösen mit Ruby AtCoder 1. Algorithmus Praktischer Test Eine Ausnahmebehandlung
Nutzen Sie entweder für die individuelle Ausnahmebehandlung in der Java Stream-API
Wie man in Ruby auf unbestimmte Zeit iteriert
[Inhouse-Studiensitzung] Behandlung von Java-Ausnahmen (26.04.2017)
Erzielen Sie eine dreistellig begrenzte Anzeige in Ruby