Detectar el error de interrupción del teclado en Python

Vaibhhav Khetarpal 10 octubre 2023
  1. Utilice la declaración try...except para detectar el error KeyboardInterrupt en Python
  2. Utilice controladores de señales para detectar el error KeyboardInterrupt en Python
Detectar el error de interrupción del teclado en Python

El error KeyboardInterrupt ocurre cuando un usuario intenta detener manualmente el programa en ejecución usando Ctrl + C o Ctrl + Z o interrumpiendo el kernel en el caso de Jupyter Notebook. Para evitar el uso no intencionado de KeyboardInterrupt que ocurre a menudo, podemos usar el manejo de excepciones en Python.

En esta guía, aprenderá cómo detectar el error KeyboardInterrupt en Python.

Utilice la declaración try...except para detectar el error KeyboardInterrupt en Python

La declaración try...except se usa cuando se trata del propósito del manejo de excepciones en Python. La declaración try...except tiene una sintaxis única; está dividido en tres bloques, todos los cuales tienen un propósito y función diferentes en el código Python.

  • El bloque try contiene el grupo de código que el intérprete debe verificar para detectar cualquier error.
  • El bloque except se utiliza para agregar las excepciones necesarias y evitar los errores del código.
  • El bloque finally contiene las sentencias que deben ejecutarse sin verificación e ignoradas por los bloques try y except.

Para explicar el código de KeyboardInterrupt en Python, tomamos un programa simple que solicita al usuario una entrada mientras maneja manualmente la excepción KeyboardInterrupt.

El siguiente código utiliza la declaración try...except para detectar el error KeyboardInterrupt en Python.

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

El programa anterior proporciona la siguiente salida.

KeyboardInterrupt exception is caught

En el código anterior, la función de entrada reside entre el bloque try y se deja vacía ya que no se necesitan más detalles en este caso. Entonces, el bloque except maneja el error KeyboardInterrupt. El error KeyboardInterrupt se genera manualmente para que podamos identificar cuándo se produce el proceso KeyboardInterrupt.

Python permite la definición de tantos bloques except como desee el usuario en un fragmento de código.

Utilice controladores de señales para detectar el error KeyboardInterrupt en Python

El módulo signal se utiliza para proporcionar funciones y mecanismos que utilizan controladores de señales en Python. Podemos captar la señal SIGINT, que es básicamente una interrupción del teclado Ctrl+C. Subir KeyboardInterrupt es la acción predeterminada cuando esto sucede.

El módulo sys en Python se utiliza para proporcionar varias variables y funciones necesarias que se utilizan para manipular distintas partes del entorno de ejecución de Python.

Los módulos signal y sys deben importarse al código Python para utilizar este método con éxito sin ningún error.

El siguiente código utiliza controladores de señales para detectar el error KeyboardInterrupt en Python.

import signal
import sys


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


signal.signal(signal.SIGINT, sigint_handler)

El código anterior proporciona el siguiente resultado.

KeyboardInterrupt is caught

En el código anterior, la función signal.signal() se utiliza para definir controladores personalizados que se ejecutarán cuando se reciba una señal de cierto tipo.

Debemos tener en cuenta que un controlador, una vez configurado para una señal en particular, permanece instalado hasta que el usuario lo restablece manualmente. En este caso, la única excepción es el controlador de 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