問題タブ [try-finally]

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 投票する
6 に答える
6469 参照

c# - C# での try/finally のオーバーヘッド?

try/catchおよびtry/ catch/をいつ、なぜ使用するかについて、多くの質問を見てきましたfinallytryそして、 /のユースケースが確実にあることを知っていますfinally(特に、usingステートメントの実装方法であるため)。

また、try/catch と exceptions のオーバーヘッドに関する質問も見てきました。

ただし、私がリンクした質問では、最終的に試行するだけのオーバーヘッドについては触れていません。

ブロックで発生するすべての例外がないと仮定すると、ステートメントがブロックを離れるときに実行されるtryことを確認するためのオーバーヘッドはいくらですか (関数から戻ることもあります)?finallytry

繰り返しますが、私はtry/ finally、 no catch、例外のスローについてのみ尋ねています。

ありがとう!

編集:さて、私はユースケースをもう少し良く見せようとします。

どちらを使用する必要がありますDoWithTryFinallyDoWithoutTryFinally?

このケースは、リターン ポイントが 2 つしかないため単純化しすぎていますが、4 つ、10 つ、または 100 のリターン ポイントがあると想像してみてください。

ある時点で、次の理由でtry/を使用したいと思います。finally

  • DRY の原則を守る (特に、出口ポイントの数が増えるにつれて)
  • this.Working内部関数が例外をスローしていないことが間違っていることが判明した場合は、が に設定されていることを確認したいと思いfalseます。

したがって、パフォーマンス上の懸念、保守性、および DRY の原則を考慮して、 (特にすべての内部例外がキャッチされると仮定できるtry場合) 出口点の数に対して、 /に関連するパフォーマンスのペナルティを被りたいと仮定しfinallyますか?

編集 #2:の名前を に変更しthis.Workingましたthis.IsBusy。申し訳ありませんが、これがマルチスレッドであることを忘れていました (ただし、実際にメソッドを呼び出すスレッドは 1 つだけです)。他のスレッドは、オブジェクトがその作業を行っているかどうかを確認するためにポーリングします。戻り値は、作業が期待どおりに行われた場合の成功または失敗です。

0 投票する
11 に答える
144553 参照

java - Java TryCatchFinallyはCatchなしでブロックします

私はいくつかの新しいコードをレビューしています。プログラムには、tryとfinallyブロックのみがあります。catchブロックは除外されているので、例外やスロー可能なものが発生した場合、tryブロックはどのように機能しますか?それはfinallyブロックに直接行くだけですか?

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

java - finallyブロックでオブジェクト参照がnullに設定されました

なぜ出力はnullではなくCoolReturnなのですか?

よろしく、
マヘンドラアスネリア

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

java - 保存された値をfinallyブロックに復元しますか?

このパターンがいくつかの異なる場所で使用されているのを見てきましたが、それが何のためにあるのか、なぜそれが必要なのか正確にはわかりません。質の高いプロジェクトで見たことがあるので、役に立つと思いますが、盲目的にフォローするのではなく、理解したいと思います。このパターンは、サーブレットフィルターとStruts2インターセプター(概念的にはフィルターと非常によく似ています)で特に見られます。

Google Guice(サーブレット)3.0の例を次に示します。

finallyブロックの値を復元するための必要性または利点は何ですか?

0 投票する
5 に答える
2063 参照

java - ネストされたリーダーを閉じる

テキスト ファイルから読み取る場合、通常は を作成しFileReader、それを にネストしBufferedReaderます。読み終わったら、2 つのリーダーのどちらを閉じる必要がありますか? それは問題ですか?

例外安全性に関しては、私は少し妄想的です。BufferedReaderコンストラクターが例外をスローするとどうなりますか? ネストされたリーダーを閉じますか? それとも、投げないことが保証されていますか?

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

python - データベースのダウンを許可しながら cx_Oracle 接続を閉じる

データベースが起動している場合、次のcx_Oracleコードは正常に機能します。

しかし、このスクリプトを実行したときにデータベースがダウンしていると、aNameErrorが発生します。

これは私には理にかなってい cx_Oracleます。接続をインスタンス化できなかったため、変数connが設定されなかったため、close()メソッドがありません。

Python で、ダウンしたデータベースの状態を適切に処理しながら、データベース接続を確実に閉じる最善の方法は何ですか?

次のようなことをするのは、私には大したことのように思えます:

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

.net - リソースのクリーンアップに「使用」および「最終的に」を使用する場合

以下のような仕組みが必要な場合はありますか?

または、すべてのクリーンアップタスクを暗黙のsomething.Dispose()呼び出しで実行する必要がありますか?


問題のあるコードは次のとおりです。

注:この関数のユーザーがsの作成を直接Parameter処理する必要がないように、クラスを定義しました。SqlParameterクラスのSqlParameterプロパティをParameter使用して、を取得できますSqlParameter

ある時点で、私のプログラムは次のことを行います(多くのクラスが含まれるため、コードを投稿できません。基本的に、多くのオブジェクトを作成するミニフレームワークがあります)。

  1. の配列を作成しますParameter
  2. GetDataTable('sp_one', parameters)
  3. GetDataTable('sp_two', parameters)
0 投票する
3 に答える
532 参照

delphi - ネストされたtry/finallyブロックを抽出します

ネストされたtry/finalブロックをルーチンから再利用可能なエンティティにどのように「抽出」しますか?私が持っていると言う

のようなものが欲しい

ネストされたオリジナルと同じ例外安全性を持たせたいです。ResourceN変数をゼロで初期化し、チェックインするだけで十分TDoSomething.Initですif Assigned(ResourceN) thenTDoSomething.Done