Sag ich mache .operator
auf ein Objekt und .operator
erzeugt einen Fehler, wie kann ich nicht das Programm beenden und stattdessen etwas anderes tun.Wie etwas bei einem Fehler in Ruby zu tun?
Antwort
Rubin bietet Ausnahmebehandlung über begin
, rescue
Blöcke. Sie können die folgenden
exception_array = []
begin
array.operator
rescue Exception => e
exception_array << e
ensure
# this line will execute irrespective of an
# error happened or not
end
Lets Aufschlüsselung der Befehle tun, und das Programm
zuerst Ihr Programm fließen versuchen, den Befehl in begin
Block auszuführen. Also, wenn es einen Fehler verursacht, dann geht es zu rescue
Abschnitt
Exception
ist da, um jede Art von Ausnahme zu fangen. Sie können jedoch auch den gewünschten Ausnahmetyp angeben. Im Folgenden ist der Rubin Ausnahme Hierarchie von nicksiegers blog
Exception
NoMemoryError
ScriptError
LoadError
NotImplementedError
SyntaxError
SignalException
Interrupt
StandardError
ArgumentError
IOError
EOFError
IndexError
StopIteration
LocalJumpError
NameError
NoMethodError
RangeError
FloatDomainError
RegexpError
RuntimeError
SecurityError
SystemCallError
SystemStackError
ThreadError
TypeError
ZeroDivisionError
SystemExit
fatal
So je nach Fehlertyp können Sie einen bestimmten Fehlertyp fangen, wenn Sie wollen
=> e
Teil ist Ihr Fehler einer Variablen zugewiesen genannt e
. Sie können dies nach Belieben umbenennen.
Der letzte Teil ist ensure
und das ist optional, Stellen Sie sicher, wird ausgeführt, egal, ob Sie einen Fehler erhalten oder nicht. Also, wenn Sie etwas zu erledigen haben, wenn ein Fehler auftritt oder nicht, können Sie ensure
Dies ist ein good read auf Rubin Fehlerbehandlung
Sie können dies tun, indem Sie Ausnahmen in rescue
blockieren.
begin
array.operator
# Change the class according to the Exception you are getting
rescue StandardError => e
exceptions ||= []
exceptions << e
end
Können Sie erklären, was 'rettung StandardError => e 'ist? Wie kann ich es so machen, dass es bei einem Fehler den Fehler als String zur Konsole ausgibt? – Forwarding
Basierend auf der Fehlerhierarchie in Ruby, stellt '' 'StandardError''' den niedrigsten Systemfehler dar, den Sie erfassen sollten. Sie könnten '' 'Exception''' einfangen, aber das bedeutet, dass Sie Dinge wie Programm-Beendigungen erfassen werden, was nicht großartig ist. Das obige Format ist im Wesentlichen "catch" (StandardError e) '' 'aus anderen Sprachen. – Mitch
- 1. wie so etwas in sqlalchemy zu tun?
- 2. Wie Ereignisse in Ruby zu tun?
- 3. Rails3 und `cd somehwere && tun etwas '
- 4. Lesen und etwas tun
- 5. Elegantere Art, dies in Ruby zu tun
- 6. Gibt es sowieso etwas wie MPI_BARRIER im Tensorflow zu tun?
- 7. Wenn Array isset, etwas tun?
- 8. (Android) Wie man etwas auf App "Start" zu tun?
- 9. Ist es möglich, so etwas zu tun?
- 10. Select, Option etwas tun
- 11. Etwas tun, wenn Wert vorhanden ist
- 12. Hat Ruby etwas ähnliches wie. =, Wie + =?
- 13. tun etwas nach AuthenticationProvider Erfolg in SpringSecurity
- 14. Ist es möglich, ein ODER in einem MATCH zu machen oder etwas Gleichwertiges zu tun?
- 15. Variablen zu einem JavaScript-Ereignisaufruf hinzufügen? etwas zu tun, wie so
- 16. Gibt es etwas wie bpython für Ruby?
- 17. etwas tun, wenn Ansicht Lasten
- 18. Wie man Observable manuell zurückgibt, ohne etwas zu tun
- 19. wie etwas zu tun, wenn ein Element Geschwister hat
- 20. etwas tun, wenn Modal verbirgt
- 21. etwas tun, wenn Attributwert ist Singular
- 22. etwas tun, wenn alle deferreds
- 23. Wie Site Analytics mit Ruby auf Schienen zu tun
- 24. UIPanGestureRecognizer tun etwas, wenn Sie sofort berührt
- 25. Ruby Loops brauchen etwas zu erklären
- 26. Android-Schaltfläche nicht etwas tun
- 27. In Swift alle x Minuten etwas tun
- 28. Was bedeutet || = tun in Ruby
- 29. Tun Sie etwas nach Benutzeranmeldung in WordPress
- 30. Ruby-Quellcode-Analysator (etwas wie pylint)
Haben Sie in der Dokumentation [Exception Handling] (http lesen: // rubi-doc.org/core/doc/syntax/exceptions_rdoc.html)? – Stefan