Articles of manejo de excepciones

Python: la captura de una excepción funciona fuera de una función pero no dentro de una función

Tengo un problema extraño que no puedo resolver yo mismo. Si ejecuto outside_func.py en dos terminales separados, la segunda ejecución detecta la excepción BlockingIOError y se imprime el mensaje: outside_func.py import fcntl import time # Raise BlockingIOError if same script is already running. try: lockfile = open(‘lockfile’, ‘w’) fcntl.flock(lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB) except BlockingIOError: print(‘Script […]

Posibles excepciones usando el tipo str () incorporado en Python

Cuando se trabaja con tipos incorporados como int y float en Python, es común emplear el manejo de excepciones en los casos en que la entrada no sea confiable: def friendly_int_convert(val): “Convert value to int or return 37 & print an alert if conversion fails” try: return int(val) except ValueError: print(‘Sorry, that value doesn\’t work… […]

intenta bloquear dentro mientras sentencia

Estoy empezando con Python 2.7 y no entiendo por qué sucede algo: En el siguiente código, una versión embellecida de un ejemplo del tutorial de Python 2.7.2, obtengo un resultado inesperado: while True: try: x = int(raw_input(“Please enter a number: “)) break except ValueError: print “Oops! That was not a valid number. Try again…” else: […]

Leyendo datos de un archivo de texto especialmente formateado

Estoy utilizando este método, sugerido amablemente por Ashwini Chaudhary, para asignar datos a un diccionario desde un archivo de texto en un formato específico. keys = map(str.strip, next(f).split(‘Key\t’)[1].split(‘\t’)) words = map(str.strip, next(f).split(‘Word\t’)[1].split(‘\t’)) El archivo de texto tiene el título de la fila seguido de valores, separados por un carácter \t . Ejemplo 1: Key a […]

¿Una forma pythonica de “reanudar el próximo” en excepciones?

El problema: estoy leyendo una serie de archivos de entrada heterogéneos. Escribí una clase de lector para cada uno de ellos, que lee el archivo usando __init__(self, file_name) , y lanza una excepción en caso de una entrada mal formada. El código se ve así: clients = Clients (‘Clients.csv’ ) simulation = Simulation (‘Simulation.csv’ ) […]

¿Cuándo se levanta KeyboardInterrupt en Python?

Todos los documentos nos dicen que es Se genera cuando el usuario pulsa la tecla de interrupción (normalmente Control-C o Delete ). Durante la ejecución, una verificación de interrupciones se realiza regularmente. Pero desde el punto del código, ¿cuándo puedo ver esta excepción? ¿Ocurre durante la ejecución de la statement? Sólo entre las declaraciones? ¿Puede […]

Cómo suprimir la visualización de la excepción principal (la causa) para las excepciones posteriores

Soy consciente de raise … from None y he leído ¿Cómo puedo suprimir más fácilmente las excepciones anteriores cuando hago mi propia excepción en respuesta? . Sin embargo, ¿cómo puedo lograr ese mismo efecto (de suprimir el mensaje “Durante el manejo de la excepción anterior, se produjo otra excepción”) sin tener control sobre el código […]

Python: prueba que se realiza correctamente cuando no se genera una excepción

Sé sobre unittest módulo de Python. Sé sobre el método assertRaises() de la clase TestCase . Me gustaría escribir una prueba que tenga éxito cuando no se produce una excepción. ¿Alguna pista por favor?

¿Cómo puedo reutilizar el código de manejo de excepciones para múltiples funciones en Python?

¿Cómo puedo reutilizar el código de manejo de excepciones para múltiples funciones en Python? Estoy trabajando en un proyecto que utilizará la biblioteca Stripe Python. https://stripe.com/docs/api/python#errors Este es un código de ejemplo de sus documentos. try: # Use Stripe’s bindings… pass except stripe.error.CardError, e: # Since it’s a decline, stripe.error.CardError will be caught body = […]

Cómo obtener un mensaje de excepción en Python correctamente

¿Cuál es la mejor manera de obtener los mensajes de excepciones de los componentes de la biblioteca estándar en Python? Noté que en algunos casos puedes obtenerlo a través de un campo de message como este: try: pass except Exception as ex: print(ex.message) pero en algunos casos (por ejemplo, en el caso de errores de […]