Rubyを学んでいてfail
キーワードに出会いました。どういう意味ですか?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
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
エラーメッセージなしで a を発生させます。
fail(string)
:RuntimeError
エラー メッセージとして文字列引数を使用して a を発生させます。
fail "Failed to open file"
fail(exception [, string [, array]])
exception
:オプションのエラー メッセージ (2 番目の引数) とコールバック情報 (3 番目の引数) を指定して、クラス (最初の引数) の例外を発生させます。
例: 不適切な引数を指定すると失敗する関数を定義するとします。ArgumentError
ではなくを発生させる方が良いですRuntimeError
:
fail ArgumentError, "Illegal String"
別の例:ブロック内のトレースにアクセスできるように、バックトレース全体をメソッドに渡すことができます。fail
rescue
fail ArgumentError, "Illegal String", caller
caller
バックトレースを形式の文字列の配列として返すカーネルメソッドfile:line: in 'method'
です。
引数なしで、$! で例外を発生させます。$! の場合は RuntimeError を発生させます。はゼロです。String 引数を 1 つ指定すると、その文字列をメッセージとして RuntimeError を発生させます。それ以外の場合、最初のパラメーターは Exception クラス (または例外メッセージが送信されたときに Exception オブジェクトを返すオブジェクト) の名前にする必要があります。オプションの 2 番目のパラメーターは例外に関連付けられたメッセージを設定し、3 番目のパラメーターはコールバック情報の配列です。例外は、begin...end ブロックのレスキュー句によってキャッチされます。
Rubocopは、両方の単語の使用法について述べています。
「例外を通知する
fail
代わりに使用します。」raise
「例外を再スローする
raise
代わりに使用します。」fail
ここに例があります。
def sample
fail 'something wrong' unless success?
rescue => e
logger.error e
raise
end
fail
==raise
言い換えれば、エラーを発生させるメソッドfail
の一般的なエイリアスにすぎません。raise
使用法:
fail ArgumentError, "Don't argue with me!"
www.ruby-doc.orgはあなたの友達です。ググったらrubydoc fail
「Kernel」が最初にヒットしました。私のアドバイスは、疑わしい場合は、このような定義的なものの決定的な情報源に行くことです.