問題タブ [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 投票する
4 に答える
2872 参照

ruby - 例外を発生させたときにRubyスクリプトを中止するにはどうすればよいですか?

Rubyで、プログラムを自動的に中止し、囲んでいる開始/レスキューブロックを無視する例外を発生させることは可能ですか?

0 投票する
2 に答える
1201 参照

ruby-on-rails - Rails 3.1:ActiveRecord :: RecordInvalidのさまざまな「理由」をアプリがどのように処理できるか(たとえば、重複と検証エラー)

私のアプリでは、ユーザーをその場で作成することがあります。ユーザーのメールは有効な形式であり、一意である必要があります。

検証によってエラーが発生した場所に応じて、別の場所にリダイレクトしたいと思います。無効な形式と重複です。

私のコードには

電子メールが無効な形式(「user @ example」など)の場合、e.messageは「検証に失敗しました:電子メールが無効です」です。

電子メールがすでにテーブルに存在する場合、e.messageは「検証に失敗しました:電子メールはすでに取得されています」です。

理由を特定するためにe.messageテキストを解析するという考えは嫌いです...ActiveRecord:: RecordInvalid例外がスローされた根本的な理由をレスキューハンドラーが検出するためのより良い方法はありますか?

PSこの例では、保存を実行する前に既存の電子メールを確認するだけで済みますが、同じ例外をスローするさまざまな検証の失敗を検出して対処するための一般的な解決策を理解しようとしています。

0 投票する
3 に答える
1145 参照

ruby - ruby は最初のレスキュー コードの先を見ないのですか?

ドキュメントの私の理解から、この一般的なアプローチはうまくいくはずです:

ただし、Watir-Webdriver ブラウザーを開こうとするたびに、2 番目の$browser = Watir::Browser.newを超えて試行しないようで、189 行目でスクリプトを終了し、 接続が拒否されました - connect(2) (Errno::ECONNREFUSED )

Code.rb:

行 186 を失敗させるために、存在しない X サーバーに事前に DISPLAY=:88 を意図的に設定したので、このエラーは問題ありません: 186: 60 秒で安定した firefox 接続を取得できません (127.0.0.1:7055)

ここでどこが間違っているのですか、これを行うためのより良い方法はありますか? これは Selenium や Watir に特有のものですか?

0 投票する
3 に答える
406 参照

ruby-on-rails - Ruby例外-ステートメントレスキューが例外を処理しない場合

皆さん、ルビーでの例外処理に問題があります。私のステートメントが機能しない理由がわかりません。

エラー:id=14のユーザーが見つかりませんでしたログインページにリダイレクトしたいです。

あなたが私を助けてくれることを願っています。

心から、オービン

0 投票する
4 に答える
1237 参照

ruby - このレスキュー構文が機能するのはなぜですか?

わかりましたので、私が使用しているアプリケーションのこの方法があり、本番環境で動作します。私の質問はなぜこれが機能するのですか? これは新しい Ruby 構文ですか?

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

ruby-on-rails-3 - Railsは開発モードでActiveRecord::RecordNotFoundからどのように自動的にレスキューできますか?

で次のコードを使用していますApplicationController

Rails が正しいステータス コードで応答し、開発モードで例外が発生しないようにするためです。

how-to-handle-errors-like-404-500-in-rails3 で、 Rails がプロダクション モードでどのように機能するかが説明されていることは知っています。言い換えれば、私が開発モードでやろうとしていることは、本番モードではコードなしで行われます。

開発モードを本番モードのように動作させ、上記のコードを取り除くにはどうすればよいですか?

私が使用していることに注意してくださいRails 3.2.3

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

ruby - レスキュー ブロックでキャッチされない例外

問題はradis-rb宝石に関連しています。

レスキュー ブロックで例外がキャッチされず、アプリがダウンします。

私のコード:

がダウンしている場合redis、メッセージWTF? 露出しています。

これは、Exception ステートメントの有無にかかわらず発生します。

レスキュー ブロックに例外が発生しないのはなぜですか?

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

ruby - Twitter Gem の例外を無視する

Twitter gem によってスローされた例外を救出して無視するにはどうすればよいですか? 私が欲しいのはこれです

コードを複製しないようにするためのより良い方法はありますか?

0 投票する
2 に答える
6940 参照

ruby - Ruby はレスキュー ArgumentError を無視します

以下を実行すると、ArgumentError に対してレスキューが無視されるようです。Ruby からの ArgumentError エラー メッセージはコンソールに表示されますが、puts メッセージは表示されません。TypeError と ZeroDivisionError でレスキューを試みたところ、うまくいきました。

0 投票する
2 に答える
1989 参照

ruby-on-rails - 一貫性のない Timeout::timeout とレスキュー Timeout::Error の動作

Timeout::timeout(1)たまにタイムアウトが発生するだけですが、1秒以上かかるプロセスに使用しています。そのときは、rescue毎回さまざまな方法でキャプチャします。これが私のコードのサンプルです:

同じ入力で遭遇する 3 つのシナリオを次に示します。

  • プロセスが完了するまで実行され、60 秒以上かかる
  • プロセスがタイムアウトしてハングし、印刷execution expiredのみdevelopment.log
  • プロセスがタイムアウトし、適切にレスキューされ、 に出力"Timeout"されdevelopment.log、返されますnil

なぜこれほど一貫性がないのでしょうか。

アップデート

タイムアウトを 0.0001 秒に減らした後、プロセスは一貫して期待どおりにタイムアウトします。ブロックは 1 秒よりも速く開いていたようで、open(file_url)ブロック内のすべての処理に 1 秒以上かかったにもかかわらず、ブロックを開くのに 1 秒以上Timeoutかかった場合にのみ、ブロックがトリガーされました。

execution expiredただし、これは例外を説明しませんでした。これをテストするために、 to をブロックTimeout::timeout(0.0001)内に移動しました。openコードは次のようになります。

今、私は一貫して output を受け取っていますEXCEPTION 2 - execution expiredTimeout::Errorここで がトリガーされないのはなぜですか?