Intento ... excepto bloque en mi código y cuando se lanza una excepción. Realmente solo quiero continuar con el código porque en ese caso, todo sigue funcionando perfectamente. El problema es si deja el bloque except: block vacío o con un #do nothing, le da un error de sintaxis. No puedo usar Continuar porque no está en un bucle. ¿Hay alguna palabra clave que pueda usar que indique al código que solo continúe?Python: cómo ignorar una excepción y continuar?
Respuesta
except:
pass
Prueba esto:
try:
blah()
except:
pass
La norma de "nop" en Python es el pass
declaración:
try:
do_something()
except Exception:
pass
Debido a la última excepción lanzada ser recordado en Python, algunas de las los objetos implicados en la declaración de lanzamiento de excepción se mantienen en vivo indefinidamente (en realidad, hasta la próxima excepción). En caso de que esto es importante para usted y (por lo general) que no es necesario 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.
Esta es una respuesta mejor que la que se aceptó porque usa "excepto Excepción:" en lugar de solo "excepto:" que, como han señalado otros, tragará incorrectamente otras cosas que no desea atrapar como SystemExit y KeyboardInterrupt . – aculich
+1 También borra el error que es importante cuando se ejecutan unittests y esperando excepciones – geographika
Tenga en cuenta que 'exc_clear' se eliminó en python 3. https: // docs.python.org/3/whatsnew/3.0.html#index-22. Para algunas formas de abordar esto en Python 3, consulte aquí: https://cosmicpercolator.com/2016/01/13/exception-leaks-in-python-2-and-3/ – bcattle
Hay una nueva manera de hacer esto viene en Python 3.4:
from contextlib import suppress
with suppress(Exception):
# your code
Aquí es realizar la confirmación que añade que: http://hg.python.org/cpython/rev/406b47c64480
Y aquí está el autor, Raymond Hettinger, hablando de esto y todo tipo de otra picor Python (poco relevante en 43:30): http://www.youtube.com/watch?v=OSGv2VnC0go
Si quería emular al desnudo except
palabra clave y también ignorar cosas como KeyboardInterrupt
-aunque que muchas veces no-usted podría use with suppress(BaseException)
.
Editar: Parece que ignored
se renombró a suppress
antes de la versión 3.4.
No estoy seguro de que me guste esta solución ... Supongo que la idea es que hayamos reemplazado 3 líneas con solo 1 (la prueba, excepto, y el pase están todos fusionados en uno). Lo principal a lo que me opongo es cómo esto introduce una nueva palabra clave que parece reivindicar algo probablemente no deberías estarlo ... parece que siempre debes registrar al menos las excepciones que atrapas ... – ArtOfWarfare
Cuando se produce una excepción, continúa el código después de la prueba/captura o lo que sea que esté fuera del ' con 'bloque? – Mikhail
Esto es equivalente a envolver su código en un 'try ... catch: pass', por lo que si se produce una excepción dentro del bloque, la ejecución continuará después del final del bloque. –
- 1. Java - ignorar excepción y continuar
- 2. Python Ignorar excepción y volver a donde estaba
- 3. SQL excepción de capturas Server y continuar
- 4. git ignorar excepción
- 5. Python: continuar la iteración de for loop en la excepción
- 6. Ignorar errores y continuar ejecutando javascript en IE?
- 7. LINQ To SQL ignoran restricción única excepción y continuar
- 8. Continuar Código después de la excepción
- 9. ¿Es posible CONTINUAR un bucle desde una excepción?
- 10. Ignorar mayúsculas y minúsculas en Python Strings
- 11. Ignorar parte de una tupla Python
- 12. Nlog LogException parece ignorar la excepción
- 13. C# parada y continuar
- 14. cómo detectar excepciones y continuar el procesamiento en Java
- 15. Cómo paso una excepción entre subprocesos en python
- 16. ¿Debo continuar registrándome una falla?
- 17. ¿El rendimiento de python implica continuar?
- 18. Manejo de una excepción de Python que se produce dentro de una cláusula de excepción
- 19. ¿Editar y continuar en Silverlight?
- 20. Python raw_input ignorar nueva línea
- 21. Python - probar una propiedad lanza excepción
- 22. Editar y continuar en GDB
- 23. Python: Ignorar xmlns en elementtree.ElementTree
- 24. ¿Cómo puedo ignorar una superclase?
- 25. Python espera x seg para una clave y continuar la ejecución si no se presiona
- 26. Cómo habilitar y modificar Editar y continuar en Visual Studio
- 27. Python, rasing una excepción sin argumentos
- 28. ¿Cómo puedo depurar retrospectivamente una excepción de python?
- 29. Diferencia entre una excepción de C++ y una excepción estructurada
- 30. Editar y continuar en proyectos web ASP.NET
excepto Excepción: pase # importante no tragar otras excepciones! –
@ Aaron - Estoy de acuerdo, pero la pregunta no era si esta era una idea buena/mala – David
Esto capturará SystemExit, KeyboardInterrupt y otras cosas que probablemente no quiera atrapar. – FogleBird