0

現在チェックしているコードベースには、次のパターンがたくさんあります。

try:
    import moduleA
    import moduleB
    from custom.module.A import AX
    from custom.module.A import AY
except KeyboardInterrupt:
    sys.exit()

これまで見たことがありません。これは何を防ぐのですか?

4

3 に答える 3

3

私がそれを理解できる唯一の方法はmodules、何らかの理由でそれらの一部がinput/それらの内部で実行されているか、または何らかの理由raw_inputで故意に実行されているかどうかです。raise KeyboardInterrupt

そうでなければ、それが何を意味するのか本当によくわかりません...(インポートの一部が実行に数時間かかる場合を除いて、そしてあなたがうんざりしている場合は、トレースバックを見ずにそれを放棄することができます-しかしそれもあまり意味がありません)

于 2013-03-16T13:00:11.470 に答える
2

ctrlキーボードから+を押すたびCに、KeyboardInterruptがPythonプロセスに送信されます。キャッチされない場合、コードで例外が発生し、コードは現在の場所で終了します。この場合、特別なアクションは実行されませんが、を呼び出すだけでsys.exit()、プログラムが再び終了しますが、スタックトレースバックは表示されません。

ドキュメントから:

http://docs.python.org/2/library/exceptions.html?highlight=keyboardinterrupt#exceptions.KeyboardInterrupt

于 2013-03-16T12:59:52.500 に答える
1

少なくとも明らかにではありませんが、それは何に対しても防御していません。KeyboardInterruptをキャッチしています:

ユーザーが割り込みキー(通常はControl-CまたはDelete)を押したときに発生します。実行中、割り込みのチェックが定期的に行われます。例外はBaseExceptionを継承して、例外をキャッチするコードによって誤ってキャッチされないようにし、インタープリターが終了するのを防ぎます。

次に、単に終了します。これは、とにかく割り込みが行うことです。

于 2013-03-16T13:00:12.537 に答える