1. ホーム
  2. ruby

[解決済み] Rubyでfailキーワードは何をするのですか?

2022-02-14 04:56:39

質問

Rubyを勉強していると fail というキーワードがあります。これは何を意味するのでしょうか?

if password.length < 8
   fail "Password too short"
end
unless  username
   fail "No user name set"
end

解決方法は?

Rubyの場合。 fail と同義です。 raise . その fail キーワードは Kernel クラスが含むモジュール Object . その fail メソッドと同様にランタイムエラーを発生させます。 raise キーワードを使用します。

は、その fail メソッドには、3つのオーバーロードがあります。

  • fail : を発生させます。 RuntimeError をエラーメッセージなしで表示します。

  • fail(string) : を発生させます。 RuntimeError を引数の文字列と一緒にエラーメッセージとして出力します。

    fail "Failed to open file"
    
    
  • fail(exception [, string [, array]]) クラスの例外を発生させます。 exception (第一引数)、オプションのエラーメッセージ(第二引数)、コールバック情報(第三引数)を指定します。

    例 不正な引数を与えると失敗するような関数を定義したとします。この場合 ArgumentError でなく RuntimeError :

    fail ArgumentError, "Illegal String"
    
    

    もう一つの例 この例では バックトレース fail メソッドの内部でトレースにアクセスできるようにします。 rescue ブロックを作成します。

    fail ArgumentError, "Illegal String", caller
    
    

    caller はカーネルメソッドであり、バックトレースを file:line: in 'method' .

引数なしで、$!の例外を発生させるか、RuntimeErrorを発生させます。 がnilの場合、$! 単一のString引数で、RuntimeErrorを発生させます。 をメッセージとする文字列。それ以外の場合,最初のパラメータは Exceptionクラスの名前(またはExceptionを返すオブジェクト)。 オブジェクトを送信します)。オプションの第2パラメータ は例外に関連するメッセージを設定し、3番目の パラメータは、コールバック情報の配列である。例外の捕捉 は、begin...endブロックのrescue句で指定します。

出典 Kernel モジュールの Ruby ドキュメント .