Python에서 KeyboardInterrupt 오류를 잡아라

Vaibhhav Khetarpal 2023년10월10일
  1. try...except 문을 사용하여 Python에서 KeyboardInterrupt 오류 잡기
  2. 신호 처리기를 사용하여 Python에서 KeyboardInterrupt 오류 잡기
Python에서 KeyboardInterrupt 오류를 잡아라

키보드인터럽트 오류는 사용자가 수동으로 Ctrl + Ctrl 또는 Ctrl + Z 명령을 사용하거나 주피터 노트북의 경우 커널을 중단하여 실행 중인 프로그램을 중지하려고 할 때 발생합니다. 의도하지 않은 키보드 사용을 방지하기 위해인터럽트 자주 발생하는 파이썬에서는 예외 처리를 사용할 수 있다.

이 가이드에서는 Python에서 KeyboardInterrupt 오류를 잡는 방법을 배웁니다.

try...except 문을 사용하여 Python에서 KeyboardInterrupt 오류 잡기

try...except 문은 Python에서 예외 처리 목적으로 사용됩니다. try...except 문에는 고유한 구문이 있습니다. 그것은 세 개의 블록으로 나뉘며, 모두 파이썬 코드에서 다른 목적과 기능을 가지고 있습니다.

  • try 블록에는 인터프리터가 오류를 검사해야 하는 코드 클러스터가 포함되어 있습니다.
  • except 블록은 필요한 예외를 추가하고 코드 오류를 우회하는 데 사용됩니다.
  • finally 블록에는 tryexcept 블록에 의해 무시되고 확인 없이 실행되어야 하는 명령문이 포함됩니다.

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은 사용자가 코드 덩어리에서 원하는 만큼 except 블록을 정의할 수 있습니다.

신호 처리기를 사용하여 Python에서 KeyboardInterrupt 오류 잡기

signal 모듈은 Python에서 신호 처리기를 사용하는 기능 및 메커니즘을 제공하는 데 사용됩니다. 기본적으로 키보드 Ctrl+C의 인터럽트인 SIGINT 신호를 잡을 수 있습니다. 이 경우 KeyboardInterrupt를 높이는 것이 기본 작업입니다.

Python의 sys 모듈은 Python 런타임 환경의 고유한 부분을 조작하는 데 사용되는 몇 가지 필수 변수 및 기능을 제공하는 데 사용됩니다.

이 방법을 오류 없이 성공적으로 사용하려면 signalsys 모듈을 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 Khetarpal avatar Vaibhhav Khetarpal avatar

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