Python で KeyboardInterrupt エラーをキャッチする
-
try...except
ステートメントを使用して Python のKeyboardInterrupt
エラーをキャッチする -
Python でシグナルハンドラーを使用して
KeyboardInterrupt
エラーをキャッチする
KeyboardInterrupt
エラーは、ユーザーがCtrl + CやCtrl + Zコマンドを使ったり、Jupyter Notebook の場合はカーネルに割り込んだりして、実行中のプログラムを手動で停止させようとしたときに発生します。しばしば発生する KeyboardInterrupt
の意図しない使用を防ぐために、Python の例外処理を利用することができます。
このガイドでは、Python で KeyboardInterrupt
エラーをキャッチする方法を学習します。
try...except
ステートメントを使用して Python の KeyboardInterrupt
エラーをキャッチする
try...except
ステートメントは、Python での例外処理の目的で使用されます。try...except
ステートメントには固有の構文があります。これは 3つのブロックに分割されており、Python コードではすべて異なる目的と機能を持っています。
try
ブロックには、インタープリターがエラーをチェックする必要のあるコードのクラスターが含まれています。except
ブロックは、必要な例外を追加し、コードのエラーをバイパスするために使用されます。finally
ブロックには、チェックせずに実行し、try
およびexcept
ブロックで無視する必要のあるステートメントが含まれています。
Python の KeyboardInterrupt
のコードを説明するために、KeyboardInterrupt
例外を手動で処理しながらユーザーに入力を求める簡単なプログラムを取り上げます。
次のコードは、try...except
ステートメントを使用して、Python の KeyboardInterrupt
エラーをキャッチします。
try:
x = input()
print("Try using KeyboardInterrupt")
except KeyboardInterrupt:
print("KeyboardInterrupt exception is caught")
else:
print("No exceptions are caught")
上記のプログラムは、次の出力を提供します。
KeyboardInterrupt exception is caught
上記のコードでは、入力関数は try
ブロックの間にあり、この場合は詳細が必要ないため、空のままになっています。次に、except
ブロックが KeyboardInterrupt
エラーを処理します。KeyboardInterrupt
エラーは手動で発生するため、KeyboardInterrupt
プロセスがいつ発生したかを識別できます。
Python では、ユーザーがコードのチャンクで必要な数の例外
ブロックを定義できます。
Python でシグナルハンドラーを使用して KeyboardInterrupt
エラーをキャッチする
signal
モジュールは、Python でシグナルハンドラーを使用する関数とメカニズムを提供するために使用されます。基本的にキーボード Ctrl+C からの割り込みである SIGINT
シグナルをキャッチできます。これが発生した場合、KeyboardInterrupt
を上げることがデフォルトのアクションです。
Python の sys
モジュールは、Python ランタイム環境の個別の部分を操作するために使用されるいくつかの必要な変数と関数を提供するために使用されます。
このメソッドをエラーなしで正常に使用するには、signal
および sys
モジュールを Python コードにインポートする必要があります。
次のコードは、シグナルハンドラーを使用して、Python の KeyboardInterrupt
エラーをキャッチします。
import signal
import sys
def sigint_handler(signal, frame):
print("KeyboardInterrupt is caught")
sys.exit(0)
signal.signal(signal.SIGINT, sigint_handler)
上記のコードは次の出力を提供します。
KeyboardInterrupt is caught
上記のコードでは、signal.signal()
関数を使用して、特定のタイプのシグナルを受信したときに実行されるカスタムハンドラーを定義しています。
ハンドラーは、特定のシグナルに設定されると、ユーザーが手動でリセットするまでインストールされたままになることに注意してください。この場合、唯一の例外は SIGCHLD
のハンドラーです。
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn