O que fazer quando KeyboardInterrupt interrompe um script inesperadamente?

O erro KeyboardInterrupt ocorre quando um usuário pressiona Ctrl+C durante a execução de um script Python, interrompendo sua execução abruptamente.

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.

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

Compartilhe este tutorial: O que fazer quando KeyboardInterrupt interrompe um script inesperadamente

Compartilhe este tutorial

Continue aprendendo:

Como corrigir OSError: [Errno 28] No space left on device

O erro OSError: [Errno 28] No space left on device ocorre quando o disco rígido ou partição onde o sistema está gravando arquivos fica sem espaço disponível.

Tutorial anterior

Como verificar a versão do Python instalada no sistema?

Neste tutorial, você aprenderá a checar a versão do Python instalada em seu sistema, um passo essencial para programadores.

Próximo tutorial