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

python - python try-finally

foo気づかれずに whizの例外が発生するのに、なぜ例外が発生するのbarですか?

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

c++ - この状況でラムダファンクターをコピーすることを避けることは可能ですか?

以下のように、C++ 11でラムダを使用してfinallyシミュレーターを作成しました。

コードは意図したとおりに動作しますが、 Finalizer構造体 (1)の ctor で望ましくない (ラムダ ファンクターの) copy ctor 呼び出しがあります。(ありがたいことに、 finally関数 (3 -> 4)の return ステートメントでのコピー構築は、RVO によって回避されます。)

コンパイラはコピー ctor 呼び出しを排除しません (少なくとも vc10 では - gcc はそれを最適化する可能性があります)。Finalizer struct (2) のファンクターの型が参照に変更されると、 finally呼び出しでのラムダ引数( 4) は r 値です。

もちろん、コードは以下のように「最適化」できます

オーバーヘッドはなく、printf呼び出しのみがスコープの最後に配置されます。でも… 好きじゃない。:(マクロでラップしようとしましたが、2つの「名前」を宣言する必要があります-1つはラムダオブジェクト用、もう1つはファイナライザーオブジェクト用です。

私の目的は単純です -

  1. 回避できる不要なパフォーマンスのオーバーヘッドはすべて排除する必要があります。理想的には、関数呼び出しがなく、すべてのプロシージャがインライン化されている必要があります。
  2. 効用関数の目的として簡潔な式を維持します。マクロの使用は許可されていますが、お勧めできません。

この状況でそれを回避する解決策はありますか?

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

c# - foreach ループが最終的に

私はtry catchとfinallyを持つforeachループを持っています。フォルダー内のファイルを通過し、最終的にそれらすべてを削除します....しかし、2つのファイルがある場合、すべてを削除しているため(アプリの機能のためにすべてを削除する必要があります)、2番目のファイルには移動しません。foreach ループを終了させて​​から foreach メソッドのすべてのファイルを削除することは可能ですか?ここに例を示します:

それが十分に明確であることを願っています。

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

exception-handling - try catch/exceptfinallyステートメントのfinallyのポイントは何ですか

私は何年もの間、多くの言語でtry-catch / exception-finallyバリアントを使用してきましたが、今日、誰かが最終的に何を意味するのかと尋ねてきましたが、答えることができませんでした。

基本的に、try-catchブロック全体の後にステートメントを配置するのではなく、最終的にステートメントを配置するのはなぜですか?つまり、次のコードブロックには違いがあります。

編集:
人々、私は最終的に何をするのか知っています、私はそれを何年もの間使用しています、しかし私の質問は上記の例//cでは最終的に入れることは冗長に見えますね?

0 投票する
7 に答える
2166 参照

c# - 最後にC#でブロックする必要がありますか?

2つの条件の違いは何ですか?method1またはmethod2を実行するたびに、実行に必要なコードブロックが必要です。2つの方法は同じように思えます。

最後に、ブロックは私には不要のようです。

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

sql - SQL SMO 例外により、finally ブロックがスキップされますか?

VS2010 Windows サービス プロジェクトを作成しました。その中で、メソッド Microsoft.SqlServer.Management.Smo.Database.ExecuteWithResults(expression) を呼び出します。私のシナリオでは、式に無効な SQL が含まれているため、期待どおりに呼び出しが失敗して例外が発生します。

メソッドが try/finally ブロック内で呼び出されることは想定されていませんが、finally ブロックは決して実行されません。

ただし、それを try/catch/finally ブロックに変更すると、catch コードと finally コードの両方が呼び出されます。

ここで何か不足していますか?finally ブロックは常に実行されるべきではありませんか?

0 投票する
6 に答える
183 参照

java - 最後に、異なる動作をするようにブロックします

私はこのような状態にあります

str = "condition3";今、私はすべてを一行にまとめたいと思います。最後にブロックは常に実行されるので、それは私のニーズを満たしません。他に何ができるか。

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

c# - .NET はデバッグを停止し、finally ブロックでコードを実行しますか?

まあ、私は最後にブロックが常にそのコードを実行するとは限らないことを読んだ(そして学んだ)(プラグを抜くことを除いて)。
参考までに、詳細については、try catch finally の質問を参照してください。

しかし、私が見つけていないこと:
デバッガーを停止すると、最終的にブロックが実行されますか?

ありがとう!

0 投票する
7 に答える
926 参照

java - 奇妙な最終的な行動?

hii関数から戻った後にこの出力が行われるのはなぜですかgo()。finallyブロックの値が「hello」に変更されていますか?

プログラムの出力は

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

java - Java catch/finally ブロックは完全にスキップされましたか?

ThreadPoolExecutor バック タスク実行モジュールがあります。一部のタスクはアプリケーション コードで終了しているように見えますが、ワーカー コードは何らかの理由で try/catch/finally をすべてスキップして次のタスクを取得するだけで、前のタスクで重要なステータス レポート コードが失われています。

この例のように、257832:5 はスレッド 8 によって取得されましたが、このスレッドは最終的に別のタスクを開始するだけです。

ThreadPoolExecutor の Runnable は正常に見えます。のように見えます

ノート:

  1. 究極の Throwable をキャッチしますが、2 つのタスク間でログに記録される例外はありません
  2. exit() が呼び出されたり、プログラムが再起動したりする兆候はありません
  3. 最初のものはすべてのログ行をスキップしました。これは、アプリ コードへの呼び出しの直後か、catch 内のものか、最終的にブロックされたものかに関係なく、ステータス レポート コードをスキップします。
  4. これは低い確率でランダムに発生します。しかし、実行されるタスクの数が多いため、依然として多くの頭痛の種になります。

これは、スレッド プール エグゼキューターが実行中の実行可能オブジェクトを魔法のように単純に削除するかのように発生します (そうしないと、Throwable としてキャッチされる InterruptedException が必要になります。Java スレッドは、シャットダウン/終了中を除き、非協調的に停止されません)。ブロック。ThreeadPoolExecutor javadoc を確認しましたが、そのようなイベントが発生することはありません。

何が起こったのでしょうか?