現在チェックしているコードベースには、次のパターンがたくさんあります。
try:
import moduleA
import moduleB
from custom.module.A import AX
from custom.module.A import AY
except KeyboardInterrupt:
sys.exit()
これまで見たことがありません。これは何を防ぐのですか?
現在チェックしているコードベースには、次のパターンがたくさんあります。
try:
import moduleA
import moduleB
from custom.module.A import AX
from custom.module.A import AY
except KeyboardInterrupt:
sys.exit()
これまで見たことがありません。これは何を防ぐのですか?
私がそれを理解できる唯一の方法はmodules
、何らかの理由でそれらの一部がinput
/それらの内部で実行されているか、または何らかの理由raw_input
で故意に実行されているかどうかです。raise KeyboardInterrupt
そうでなければ、それが何を意味するのか本当によくわかりません...(インポートの一部が実行に数時間かかる場合を除いて、そしてあなたがうんざりしている場合は、トレースバックを見ずにそれを放棄することができます-しかしそれもあまり意味がありません)
ctrlキーボードから+を押すたびCに、KeyboardInterruptがPythonプロセスに送信されます。キャッチされない場合、コードで例外が発生し、コードは現在の場所で終了します。この場合、特別なアクションは実行されませんが、を呼び出すだけでsys.exit()
、プログラムが再び終了しますが、スタックトレースバックは表示されません。
ドキュメントから:
少なくとも明らかにではありませんが、それは何に対しても防御していません。KeyboardInterruptをキャッチしています:
ユーザーが割り込みキー(通常はControl-CまたはDelete)を押したときに発生します。実行中、割り込みのチェックが定期的に行われます。例外はBaseExceptionを継承して、例外をキャッチするコードによって誤ってキャッチされないようにし、インタープリターが終了するのを防ぎます。
次に、単に終了します。これは、とにかく割り込みが行うことです。