2016-06-13 12 views
0

私はいくつかのデータ収集を行うpythonプログラムを持っています。収集機能では、私が最初にネットワーク接続がまだ生きていることを確認する必要があり、終了は、(1)それはそうのように切断されている場合:ブロックを除いてPythonプログラムが終了しない

try: 
    collect_data() 
except: 
    logging.error("Connection dropped. Exiting program.") 
    exit(1) 

問題は、プログラムが終了するされていないということです。私はログファイルが "接続が落ちた"ことを示すので、exceptブロックが実行されることを知っています。エラー。どのように起こる可能性がありますか?

+2

'exit()'は 'sys.exit()'ですか? –

+2

あなたはここでブランケットを使用しています。これは悪い考えで、コード内のどこかで同じことをしている可能性があります。スタック上の他のブランケット 'except'は、' SystemExit'例外を捕捉し、終了を取り消します。 – user2357112

+1

代わりに何が起こるのですか?別のブロックを 'except'ブロックで捕まえて、プログラムが終了しないようにしましたか? –

答えて

0

のPython 2.7を使用して

@ user2357112、これを考え出すためにコメント他のすべてに感謝します。私は起こった文と二つのものを除いて、あまりにも多くの毛布を使用していたが判明します。exit()が呼び出されたときに

  1. によっては、それは時々ブロックを除いて、他のことで巻き込まれ、無視ました。

  2. collect_data()内からCtrl-C KeyboardInterruptを使用してプログラムを強制終了したとき、偶然にブロックを除いて(上記の問題#1のために気づいていなかった)

修正したコードは次のようなものでなければなりません:

try: 
    collect_data() 
except Exception as e: 
    logging.error("Connection dropped. Exiting program.") 
    sys.exit(1) 

これは私が持っていた問題を修正しました。私の愚かさから私を救ってくれてありがとう。

関連する問題