問題タブ [rescue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
904 参照

ruby-on-rails - Ruby レスキューは StandardError をキャッチしません

Ruby Rails アプリケーションのテストを作成しており、Ruby が接続できない場合に Redis サーバーによってスローされたエラーをキャッチするコード ブロックがあります。現在、コードは次のようになっています。

テストを実行しようとしたときのスタック トレースによると、そのコード スニペットの 2 行目 -- config.before(:all) {...} -- がRedis::CannotConnectErrorをスローします。多くの「e.class.superclass.superclass...」コマンドの後、このエラーは StandardError から継承されていると判断しました。

その後、行き詰まりました。「rescue Redis::CannotConnectError」、「rescue」、最後に「rescue Exception」でエラーをキャッチしようとしましたが、それでもエラーがスローされます。ただ、Rubyのコマンドプロンプトで同じことをやってみたところ、毎回例外がキャッチされました

ここで何が起こっているのかを理解するのを手伝ってくれる人はいますか? ありがとう!

0 投票する
1 に答える
63 参照

ruby - 適切な結果が得られるまで例外を繰り返し処理する方法は?

メソッドを実行するとエラーが発生するのと同じ回数だけ発生させてレスキューしたいカスタム例外があります。最終的には例外のない結果になることを私は知っています。

begin/rescue/end を使用すると、例外がスローされてレスキュー ブロックが呼び出されたときのように見えます。例外が再度スローされると、プログラムは begin/rescue/end ブロックを離れ、エラーによってプログラムが終了します。適切な結果が得られるまでプログラムを実行し続けるにはどうすればよいですか? また、何が起こっているのかについての私の考えは間違っていますか?

これが基本的に私がやりたいことです(ただし、明らかに可能な限りコードのDRYを使用しています...このコードは説明するためのものであり、実装するものではありません)。

0 投票する
1 に答える
1081 参照

ruby - Ruby を使用してループ内で例外をレスキューする必要がありますか?

私は ruby​​ についてますます学んでおり、ときどきタイムアウトする (複数の API 呼び出しを行う) スクリプトを作成しました。

rescue次のような例外が必要であることはわかっています。

rescue私の質問は、そのブロックをどこに置くべきかということです。複数のループ内で複数の API 呼び出しを行っているため、各 API ループ内にそのブロックを配置する必要がありますか? rescueたとえば、スクリプトの最後にブロックを一度だけ記述し、スクリプトの各ループ内で動作させることをお勧めします。Ruby 1.9.3 を使用しています。

0 投票する
1 に答える
8811 参照

ruby - Ruby レスキュー構文エラー

エラーが発生する次のコード行があります。

私が受け取っているエラーはこれです:

基本的に、スクリプトがタイムアウトした場合に API 削除呼び出しを実行しようとしています。ブロックに何を入れても問題ないようですがrescue、同じエラーが発生します。rescueメソッドの構文の何が問題になっていますか?

0 投票する
1 に答える
10908 参照

ruby - Ruby が特定のコード ブロックをレスキューして再試行する

スクリプトに次のコードがあります...

私の質問は、retry実際に「再試行」することです。スクリプトが 1 つのループで既に 1000 通の電子メールを生成し、別のループで 999 通の電子メールを送信し、1000 番目の電子メールの送信でタイムアウトした場合、エラーが発生した特定のコード行を再試行しますか、ループを開始しますか? 1000 通目の電子メールで終了すると、ループ全体が開始されますか、それとも両方のループを実行するスクリプトの最初から開始されますか?

Ruby 1.9.3 を使用しています。