問題タブ [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.
java - javaは、Apache pdfboxで最後に直接ジャンプするcatch句をスキップします
私はこれで髪に手を入れています。
JavaでPDFファイルを1行ずつ読み込んで、後で内容を処理したいので、Apache PDFBoxを使用しています。ただし、次の問題があります。別の Java プログラム (メイン メソッド内) で以下のコードを使用しましたが、そこでは正常に動作します。しかし、Tomcat サーバー アプレットで Quartz スケジューラと組み合わせて使用すると、問題が発生し、その理由がわかりません。作業中の別のテスト プログラムから以下の行をコピーして自分のより大きなプロジェクトに貼り付けたので、まったく同じコードになることに注意してください。しかし、私のより大きなプロジェクトでは、ブレークポイントを設定した String x1 = .. 行までプログラムが実行されます。ステップオーバーしようとすると、エラー、コンソール出力などは表示されず、catch 句を最後に直接ジャンプします。catch 句にブレークポイントを設定したところ、
これは私のコードです:
私が得る唯一の出力は、プログラムの他の部分のために初期化する必要があったLOG4Jからのものであり、出力の最後の数行は
今、私を悩ませているのは、その呼び出しで何が問題になっているのかをどうやって把握できるのでしょうか? 私が言ったように、コードを別のJavaプログラムに入れれば問題なく動作します..しかし、エラー出力を取得したり、例外をキャッチしたりすることはできません(例外をキャッチしようとしていますが、IOExceptionを与える必要があります。それも試しました)。
これをどうするか知っている方がいらっしゃることを願っています。敬具
python - finally句のPython例外は、以前の例外を食いつぶします
私の実際の場合、ctypesを介して使用される外部ライブラリに由来するため、何もできない句がSegmentation fault
発生します。finally
実際、スクリプトはとにかく行われるので、私はこのセグメンテーション違反を気にしません。
ただし、finallyのsegfaultは、それ以前に発生したすべての例外を最終的に食い尽くします。したがって、最初のデバッグNameError
はiDontExist
お尻の痛みになります。それはどこでも起こりません。現在、セグメンテーション違反の前から発生した例外を確認する方法はありません。
私はそれについて何ができると思いますか?外部ライブラリを修正することはオプションではありません。
java - キャッチ例外の前に最後に印刷
たとえば、次のスニペットでなぜだろうか。
このコードの結果は、"This is the finally"
最初に印刷され、印刷された後にのみ印刷されInstantiationException
ます...
c++ - 労働者を解雇する
多数のワーカー スレッドを開始する関数があります。各ワーカー スレッドはオブジェクトによってカプセル化されており、そのオブジェクトのデストラクタがjoin
スレッドを試行します。つまり、 を呼び出しますif (thrd_.joinable()) thrd_.join();
。しかし、各労働者がどれだけの仕事をしなければならないかはアプリオリにはわかりません。管理関数は、ミューテックスと条件変数を使用して作業単位をスレッドに割り当てます。行う作業がこれ以上ない場合、ミューテックスが保持されている間に特定のフラグが設定され、条件変数でブロックされているすべてのスレッドに通知されるため、スレッドはウェイクアップし、変更されたフラグに気づき、シャットダウンします。
メインスレッドに例外があっても、このシャットダウンが機能するようにします。Java では、finally
句を使用して常にフラグを設定し、作業処理ループの最後にスレッドに通知します。C++ には がないためfinally
、独自の置換を作成しました。
しかし、ここでは明らかに他の言語の概念を考えています。これを達成するためのよりC++のような方法はありますか? 解決策としては、メソッドからの通常の戻りと例外がスローされた場合の両方で何らかのコードを実行するか、フラグと条件変数の組み合わせの代わりにワーカーをウェイクアップするためのより良いメカニズムを提供する必要があります。
java - try-catch-finally-return の説明
上記のトピック (タイトルを参照) に関連して、このフォーラムで既に尋ねられたすべての質問を読むことで、finally
が常に呼び出されることを完全に理解しています。System.exit
(fromおよび無限ループを除く)。return
ただし、 catch ブロックで a が呼び出されてreturn
から、finally ブロックから別のa が呼び出されるかどうかを知りたいです。
例えば:
したがって、ここでの出力 (メソッドが呼び出されたとき) は、いずれの場合も 34 になります。これは、最終的に常に実行されることを意味します。他の「返品」はまったく実行されていないと思います。多くの投稿で、catch 句 return によって既に書き込まれている内容を最終的に上書きするという事実を見つけました。私の理解では、catch 句の戻り値が評価されようとするとすぐに、制御フローが finally 句に渡され、次に別の戻り値が返されます。今回は、制御を catch 句に戻さずに戻り値が評価されます。 . このようにしてreturn
、実行時に呼び出されるのは最終的に返されるだけです。それに同意しますか?
return
infinally
は制御をプログラムに戻しませんが、値を返し、メソッドを終了します。そう言えますか?
android - AndroidでのTryandCatchの問題
以下のコードを実行するとすぐに、メディアが60秒間再生され、「残念ながら、YourAPPが停止しました」というエラーでアプリが閉じます。。「bv.setImageResource(R.drawable.play);」を削除した場合 最終的にブロックすると、アプリは完全に機能します。
finallyブロックのbv.setImageResource(R.drawable.play)の問題は何ですか?
これは私のコードです
LogCat
shell - 最後にシェルでtrycatchを書く
java trycatchのようなLinuxbashコマンドはありますか?それとも、Linuxシェルは常に継続しますか?
c# - try catchの動作、そして最後にc#のreturnステートメントワークフロー
私はこの試行、キャッチ、そして最後にreturnステートメントワークフローについてほとんど疑いがありません...
この機能は、上司が表示するために従業員の休暇情報を取得するために使用されます。これは非常にうまく機能しますが、ifステートメントのデータが見つかった場合はそれが返され、そうでない場合はブロックが返されます。両方がリターンを取得したとしても、それは最終的にステートメントになります。どうしてか分かりません?
ここのコードスニペット:
サルバよろしく
java - 最終的に使用するのは良い習慣ですか
コードで try catch ブロックを使用します。ここで聞きたいのは、finally ブロックを使用することは良い習慣だということです。コード内の最終ブロックはあまり見たことがありません。それは悪い習慣ですか?