O que fazer quando KeyboardInterrupt interrompe um script inesperadamente?
O erro KeyboardInterrupt em Python ocorre quando um usuário pressiona Ctrl+C no terminal enquanto o script está em execução. Esse atalho gera uma interrupção que finaliza imediatamente a execução do código.
Exemplo do erro
while True:
try:
print("Executando...")
except KeyboardInterrupt:
print("Script interrompido pelo usuário.")
break
Neste exemplo, um loop infinito está rodando e pode ser interrompido manualmente com Ctrl+C. O bloco except KeyboardInterrupt
captura a interrupção e imprime uma mensagem antes de finalizar o script de forma controlada.
Como evitar interrupções inesperadas?
1. Capturando KeyboardInterrupt com Try-Except
Para evitar que um script seja encerrado abruptamente, utilize um bloco try-except para capturar a interrupção e tratá-la de maneira adequada:
try:
while True:
print("Rodando...")
except KeyboardInterrupt:
print("Encerrando o script com segurança.")
Esse código impede que o erro cause uma finalização abrupta e permite executar ações antes de sair, como salvar arquivos ou limpar processos em andamento.
2. Ignorando KeyboardInterrupt
Se desejar evitar que o script seja interrompido completamente, pode-se ignorar o erro:
import signal
import sys
def ignorar_sinal(sig, frame):
print("Interrupção ignorada, continue rodando...")
signal.signal(signal.SIGINT, ignorar_sinal)
while True:
print("Executando...")
Esse código impede que o Ctrl+C encerre o programa, exibindo apenas uma mensagem e continuando a execução.
Por que é importante capturar KeyboardInterrupt?
A interrupção de scripts pode ser problemática em sistemas que exigem estabilidade e controle. Em aplicações críticas, como servidores e automação, capturar KeyboardInterrupt garante que processos importantes sejam finalizados corretamente, evitando perda de dados ou falhas inesperadas.
Algumas aplicações:
- Garantir que processos críticos não sejam interrompidos abruptamente.
- Permitir a finalização segura de operações em execução.
- Evitar a perda de dados em scripts de automação e servidores.
Dicas para quem está começando
- Use
try-except KeyboardInterrupt
para capturar interrupções e evitar fechamentos inesperados. - Se precisar impedir que um script seja encerrado, utilize
signal.signal(signal.SIGINT, ignorar_sinal)
. - Certifique-se de que o código finalize corretamente antes de sair.
Contribuições de Fernando Antunes