問題タブ [systemexit]
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.
python - sys.exit() から発生した SystemExit 例外がキャッチされないようにする方法はありますか?
ドキュメントによると、sys.exit() を呼び出すと SystemExit 例外が発生し、外部レベルでキャッチされる可能性があります。テストケース内から確実かつ疑いなく終了したい状況がありますが、unittest モジュールは SystemExit をキャッチし、終了を防ぎます。これは通常は素晴らしいことですが、私が対処しようとしている特定の状況は、テスト フレームワークが非テスト データベースを指すように構成されていることを検出した場合です。この場合、終了して、それ以上テストが実行されないようにしたいと考えています。もちろん、単体テストは SystemExit をトラップし、順調に進んでいるため、私を妨害しています。
私がこれまでに考えた唯一のオプションは、ctypes または exit(3) を直接呼び出すのに似たものを使用することですが、これは本当に単純であるべき何かに対するかなり厄介なハックのようです。
python - メインスレッドのスレッドで未処理の例外を発生させますか?
同様の質問がいくつかありますが、私が必要とする答えを提供するものはありません。
を介してスレッドを作成するthreading.Thread
と、未処理の例外がスローされ、それらのスレッドは終了します。スタック トレースで例外の詳細のデフォルトの出力を保持したいのですが、プロセス全体も停止します。
スレッド内のすべての例外をキャッチして、メイン スレッド オブジェクトでそれらを再発生させるか、デフォルトの例外処理を手動で実行してからメイン スレッドで a を発生させることが可能かもしれないと考えましたSystemExit
。
これについて最善の方法は何ですか?
eclipse - サポートされていない @SuppressWarnings("PMD.DoNotCallSystemExit")
アプリケーションで使用する必要がSystem.exit(0)
あります。Eclipse には PMD プラグインがインストールされており、このコード行について不平を言っています。追加するとその警告が削除されますが、機能しているにもかかわらず、@SuppressWarnings ("PMD.DoNotCallSystemExit")
これがサポートされていないという警告が表示されます。SuppressWarnings
これを解決する方法はありますか?
python - Pythonは、KeyboardInterrupt例外を伴う無限ループを終了します
Ctrl+C を押しても while ループが終了しません。私の KeyboardInterrupt 例外を無視しているようです。ループ部分は次のようになります。
繰り返しますが、何が問題なのかはわかりませんが、私の端末は、例外にある 2 つの印刷アラートを出力することさえありません。誰かがこの問題を理解するのを手伝ってくれますか?
python - celery は、task_postrun シグナルで SystemExit を発生させてワーカーをシャットダウンしようとしますが、常にハングし、メイン プロセスが終了しません。
task_postrun シグナルで raisin SystemExit() によってメインのセロリ プロセスをシャットダウンしようとしています。シグナルは問題なく発生し、例外が発生しますが、ワーカーが完全に終了することはなく、そこでハングします。
これを機能させるにはどうすればよいですか?
どこかで設定を忘れていませんか?
以下は、ワーカー (worker.py) に使用しているコードです。
以下は、tasks.py のコードです。
これをテストするには、まずワーカー コード ( python worker.py
) を実行し、次のようにタスクをキューに入れます。
ワーカーからの出力は次のとおりです。
Pythonコードが呼び出しから戻ってからapp.worker_main()
印刷さWORKER EXITED
れ、プロセスが完全に終了することを期待していました。これは決して起こらず、それをなくすにはワーカー プロセスをkill -KILL {PID}
編集する必要があります (他のタスクを消費することもできません。
私の主な質問は次のようになると思います:
からコードを返すにはどうすればよいapp.worker_main()
ですか?
いくつかのタスクが実行された後、(プロセスを完全に終了させることによって)ワーカープロセスを完全に再起動できるようにしたいと考えています。X
UPDATEワーカーが何にハングアップしているかを把握しました-ワーカー(例外をキャッチした後WorkController
、への呼び出しにハングself.stop
SystemExit
python - argparse.ArgumentParser.parse_args() が引数エラーで終了しないようにする方法はありますか?
例えば:
問題は、parser.parse_args
でエラーが発生した場合に自動的に終了することですargs_list
。代わりに、より友好的な例外を発生させる設定はありますか? SystemExit
それを回避する方法がある場合、必要なエラーメッセージをキャッチして抽出する必要はありません。
java - javaでSystem.exit()を呼び出す正確な目的は何ですか?
system.exit と少し混乱しています。このリンクからいくつかのことを見つけました。
しかし、私の心にはいくつかの疑問があります。システム終了を使用すると、作成されたオブジェクト、変数などはどうなりますか。system.exit を呼び出すと、すべてが破棄されますか? 「はい」の場合、system.exit() の前にガベージ コレクションを強制するのはなぜですか? 「いいえ」の場合、作成されたオブジェクトは JVM (メモリ) にどのくらいの期間保存されますか? システムを終了した後にプログラムを再度実行する場合、System.exit(); を呼び出した後に以前のオブジェクトが破棄されなかった場合、以前のオブジェクトはどうなりますか?
ありがとう。
java - 異なるパラメーターでクラスをリロードする
だから私は次のようなコードを持っています:
クラスA
クラスB
クラスC
ClassAのオブジェクトがClassBを呼び出し、フレームが初期化されます。ClassBのボタンが押されると、 ClassCのオブジェクトが初期化されます。
ClassCのボタンが押されたら、更新されたパラメータでClassAのオブジェクトを再初期化する必要があります。したがって、 ClassCからClassAのオブジェクトを再初期化する間、ClassCの古いオブジェクトはまだそこにあります。
特定のボタンが押されたときにClassAの古いオブジェクトを終了し、 ClassAの新しいオブジェクトを初期化するにはどうすればよいですか? ClassAの新しいインスタンスを作成できますが、 ClassCを追加すると ClassA の両方のオブジェクトが閉じられるため、ClassCから前のオブジェクトを終了するときに問題が発生します。古いオブジェクトを閉じたいだけです。System.exit(0)