な応用の広い例外ハンドラを取得しょう?
-
01-07-2019 - |
質問
長い話を短くすれば、大幅なPythonアプリなど、発信呼び出しを行うと、"losetup","マウント"など。プログラムを利用しています。.基本的に消費するシステムリソースが解放されなければなが完了します。
場合にアプリクラッシュ、したいこれらのシステムリソースを適切に公開された。
ることに意味がないようなものは次のうちどれでしょう?
def main():
# TODO: main application entry point
pass
def cleanup():
# TODO: release system resources here
pass
if __name__ == "__main__":
try:
main()
except:
cleanup()
raise
このものが一般的。ありそうです。そのデストラクタは、シングルトンクラス?
解決
私のようなトップレベルの例外ハンドラに関わらずれていました。彼らは、清掃資源の場合、直ちに関係の資源消費の方法げは例外です。
でも幻想的な場所 ログ 人が別途定める場合を除き、そのような枠組みます。トップレベルのハンドラはその奇妙な例外なんでしょうかプランする準備ができております修正しなければならない、今後、そうでないことはできません知ってます。
に注意してくださいこのトップレベルのハンドラのない例外をスロー!
他のヒント
Aデストラクタとしては、__del__法)をもっていったということとしてこれらを保証するものではありませんの呼び出しを行います。のatexitモジュールをより安全なアプローチは、これらは火事ではない場合はPythonインタプリタの衝突ではなく、Pythonの応用)場合、またはos._exit()を使用して、この処理を積極的に殺害され、または機械の再起動.(もちろん、最後の項目ではないの問題がるケースがあるようです。 る場合は衝突が多い(このメンタワイの村は漁師の第三者の拡張モジュールは、インスタンスのとします。いの清掃簡単に親プロセスです。
ませんが、利用のatexitモジュールです。
申請広ハンドラです。あなたのログイン.での応用幅は耐久性が落そのものです。
ご利用の場合の授業、無料の資源配分をdestructorsくのコースです。利用の試み:全申請けしたい場合は無料資源のない既に解放される授業科目のdestructors.
とを使わずにキャッチすべての以下の場合を除を使用してみてください以下のブロック:
try:
main()
finally:
cleanup()
そのために清掃活動をよりpythonicます。
どうしよう、ちょっと合理的なアプローチは、よりわかりやすく信頼性の高い、デストラクタは、シングルトンクラスです。すもの"atexit"モジュールです。するもの"出口"があるので、"a texであります。私は混乱すること。)
考えて書くコンテキストの長を利用します。