Pegue o erro de interrupção do teclado em Python

Vaibhhav Khetarpal 10 outubro 2023
  1. Use a instrução try...except para detectar o erro KeyboardInterrupt em Python
  2. Use manipuladores de sinais para detectar o erro KeyboardInterrupt em Python
Pegue o erro de interrupção do teclado em Python

O erro KeyboardInterrupt ocorre quando um usuário tenta manualmente interromper o programa em execução usando o Ctrl + C ou Ctrl + Z comandos ou interrompendo o kernel no caso do Jupyter Notebook. Para evitar o uso não intencional de KeyboardInterrupt que ocorre com frequência, podemos usar o tratamento de exceções em Python.

Neste guia, você aprenderá como detectar o erro KeyboardInterrupt em Python.

Use a instrução try...except para detectar o erro KeyboardInterrupt em Python

A instrução try...except é usada quando se trata do propósito de tratamento de exceções em Python. A instrução try...except tem uma sintaxe única; ele é dividido em três blocos, todos com um propósito e função diferentes no código Python.

  • O bloco try contém o cluster de código que deve ser verificado por qualquer erro pelo interpretador.
  • O bloco except é utilizado para adicionar as exceções necessárias e contornar os erros do código.
  • O bloco finally contém as instruções que precisam ser executadas sem verificação e ignoradas pelos blocos try e except.

Para explicar o código para KeyboardInterrupt em Python, pegamos um programa simples que pede a entrada do usuário enquanto lida manualmente com a exceção KeyboardInterrupt.

O código a seguir usa a instrução try...except para capturar o erro KeyboardInterrupt em Python.

try:
    x = input()
    print("Try using KeyboardInterrupt")
except KeyboardInterrupt:
    print("KeyboardInterrupt exception is caught")
else:
    print("No exceptions are caught")

O programa acima fornece a seguinte saída.

KeyboardInterrupt exception is caught

No código acima, a função de entrada reside entre o bloco try e é deixada em branco, pois não são necessários mais detalhes neste caso. Então, o bloco except trata o erro KeyboardInterrupt. O erro KeyboardInterrupt é gerado manualmente para que possamos identificar quando ocorre o processo KeyboardInterrupt.

Python permite a definição de tantos blocos except quantos o usuário quiser em um pedaço de código.

Use manipuladores de sinais para detectar o erro KeyboardInterrupt em Python

O módulo sinal é utilizado para fornecer funções e mecanismos que usam manipuladores de sinal em Python. Podemos captar o sinal SIGINT, que é basicamente uma interrupção do teclado Ctrl+C. Aumentar o KeyboardInterrupt é a ação padrão quando isso acontece.

O módulo sys em Python é utilizado para fornecer várias variáveis ​​e funções necessárias para manipular partes distintas do ambiente de execução Python.

Os módulos signal e sys precisam ser importados para o código Python para usar este método com sucesso sem nenhum erro.

O código a seguir usa manipuladores de sinal para capturar o erro KeyboardInterrupt em Python.

import signal
import sys


def sigint_handler(signal, frame):
    print("KeyboardInterrupt is caught")
    sys.exit(0)


signal.signal(signal.SIGINT, sigint_handler)

O código acima fornece a seguinte saída.

KeyboardInterrupt is caught

No código acima, a função signal.signal() é utilizada para definir manipuladores personalizados a serem executados quando um sinal de um determinado tipo é recebido.

Devemos observar que um manipulador, uma vez definido para um sinal específico, permanece instalado até que o usuário o redefina manualmente. Nesse caso, a única exceção é o manipulador para 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