Ich möchte einen Fehler vermeiden, wenn ein require
nicht erfolgreich ist.
Ich kann das mit folgendem Code erreichen:
begin
require 'nicht_vorhandenes_skript'
rescue LoadError
end
Ich habe versucht, dasselbe mit einer Einzeiligen Bedingung zu machen:
require 'nicht_vorhandenes_skript' rescue LoadError
und erhalte den Fehler Datei nicht gefunden -- nicht_vorhandenes_skript (LoadError)
Bei anderen Ausnahmen/Befehlen habe ich kein Problem mit einem Einzeiligen rescue
, das funktioniert:
1 / 0 rescue ZeroDivisionError
Ich habe auch versucht, den Befehl in Klammern zu setzen, jedoch ohne Erfolg:
(require 'nicht_vorhandenes_skript') rescue LoadError
Ich kann alles in einer Zeile mit ;
setzen:
begin require 'nicht_vorhandenes_skript'; rescue LoadError; end
aber ich frage mich immer noch, warum die kürzeste Version nicht funktioniert.
Ich habe einige verwandte Fragen gefunden, aber keine davon erwähnt ein Problem mit require
und rescue
:
- Warum funktioniert diese Rescue-Syntax?
- Wie benutzt man Rescue in Ruby ohne den Begin und End Block?
Meine Frage:
Kann ich rescue
in einer Einzeiligen Bedingung mit require
verwenden? Wenn ja: wie? Wenn nein: Warum nicht?