Python: ¿Cómo ignorar una excepción y proceder? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
- Cómo ignorar correctamente las excepciones 11 respuestas
Tengo una oportunidad...excepto bloquear en mi código y Cuando una excepción es lanzar. Realmente solo quiero continuar con el código porque en ese caso, todo todavía es capaz de funcionar bien. El problema es si dejas el bloque except: vacío o con un # do nada, te da un error de sintaxis. No puedo usar continuar porque no está en un bucle. ¿Hay alguna palabra clave que pueda usar que le diga al código que siga adelante?
4 answers
except:
pass
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-22 11:03:55
El estándar " nop " en Python es la instrucción pass
:
try:
do_something()
except Exception:
pass
Debido a que la última excepción lanzada se recuerda en Python, algunos de los objetos involucrados en la instrucción exception-throwing se mantienen en vivo indefinidamente (en realidad, hasta la siguiente excepción). En caso de que esto sea importante para usted y (típicamente) no necesite recordar la última excepción lanzada, es posible que desee hacer lo siguiente en lugar de pass
:
try:
do_something()
except Exception:
sys.exc_clear()
Esto borra la última excepción lanzada.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-02 01:01:37
Hay una nueva forma de hacer esto en Python 3.4:
from contextlib import suppress
with suppress(Exception):
# your code
Aquí está el commit que lo agregó: http://hg.python.org/cpython/rev/406b47c64480
Y aquí está el autor, Raymond Hettinger, hablando de esto y todo tipo de otro hotness Python (bit relevante en 43:30): http://www.youtube.com/watch?v=OSGv2VnC0go
Si quieres emular la palabra clave desnuda except
y también ignorar cosas como KeyboardInterrupt
, aunque normalmente no lo haces, puedes usar with suppress(BaseException)
.
Editar: Parece que ignored
fue renombrado a suppress
antes de la versión 3.4.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-19 15:10:53
Prueba esto:
try:
blah()
except:
pass
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-22 11:04:33