[解決済み] Rubyで例外をキャッチした後に同じ例外を発生させる方法
2022-12-27 02:25:10
質問
Rubyのスキルを向上させるために、例外をキャッチすることに挑戦しています。私は、いくつかのメソッド呼び出しがある場合、同じ種類の例外を再表示するのが一般的であるかどうかを知りたいです。そこで、以下のようなコードは意味があるのでしょうか?同じ種類の例外を再び発生させても良いのでしょうか、それともプロセスメソッドでキャッチしない方が良いのでしょうか?
class Logo
def process
begin
@processed_logo = LogoProcessor::create_image(self.src)
rescue CustomException
raise CustomException
end
end
end
module LogoProcessor
def self.create_image
raise CustomException if some_condition
end
end
どのように解決するのですか?
時々、私たちはただエラーを知りたくなります が発生した を、実際に を処理します。 を処理する必要はありません。
エラーを処理する責任があるのは、オブジェクトのユーザ、つまり呼び出し側であるということはよくあることです。もし私たちがエラーに興味があるが、その責任を負いたくないとしたらどうでしょうか?私たちはエラーを救助し、必要なことは何でも行い、そして何事もなかったかのようにスタック上にシグナルを伝播させます。
例えば、エラーメッセージを記録し、呼び出し元がそれに対処するようにしたい場合はどうでしょうか。
begin
this_will_fail!
rescue Failure => error
log.error error.message
raise
end
呼び方
raise
を引数なしで呼び出すと、最後のエラーが発生します。私たちの場合、再レイズしているのは
error
.
あなたが質問で示した例では、エラーを再度発生させることは単純に必要ではありません。単にスタックの上に自然に伝播させることができます。あなたの例での唯一の違いは、新しいエラーオブジェクトを作成し、最後のものを再レイズする代わりにそれをレイジングしていることです。
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Rubyで「例外 => e」を救済するのはなぜ悪いスタイルなのですか?
-
[解決済み] ...』の違い (ダブルドット) と '...' の違い?(トリプルドット)の違いについて教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyでコンソールから入力を読み込む?
-
[解決済み] rubyのClassとKlassの違いは何ですか?
-
[解決済み] Sinatraがファイルを変更するたびに自動で再読み込みするようにするには?
-
[解決済み] 今月の名前(Date.today.monthをnameに変換)。
-
[解決済み] Ruby文字列のgsubメソッドとsubメソッドの違いについて
-
[解決済み] rubyのinjectはreduceと同じ意味ですか?
-
[解決済み] Herokuの基本的なアプリのロードに2秒かかるのはなぜですか?
-
[解決済み] bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby [closed].
-
[解決済み] メソッドから2つ以上の値を返す
-
[解決済み] Rubyの配列で同じ文字列の要素をカウントする方法