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"
別の例:ブロック内のトレースにアクセスできるように、バックトレース全体をメソッドに渡すことができます。failrescue
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」が最初にヒットしました。私のアドバイスは、疑わしい場合は、このような定義的なものの決定的な情報源に行くことです.