问题的提出
给出一个基本的Python程序。如果发生异常,如何在不退出程序的情况下打印 异常?
例如,考虑下面这个程序,它引发了一个ZeroDivisionError: division by zero 。
x = 42/0
print('Program is still running')
其输出结果是。
Traceback (most recent call last):
File "C:\Users\xcent\Desktop\code.py", line 1, in <module>
x = 42/0
ZeroDivisionError: division by zero
你希望程序在给你一个关于异常的说明后继续运行并执行打印语句。
division by zero
Program is still running
如何在Python中完成这个任务?
基本解决方案。Try/Except
一个异常将立即终止你的程序。为了避免这种情况,你可以在你预期可能发生某种异常的代码周围用一个try/except 块来捕获异常。下面是你如何捕捉并打印一个给定的异常。
要捕捉并打印一个发生在代码片段中的异常,可以用一个缩进的try 块将其包裹起来,然后用命令"except Exception as e" 捕捉异常并将其错误信息保存在字符串变量e 。现在你可以用"print(e)" 来打印错误信息,或者用它来做进一步处理。
这里是一般的_异常处理框架。_
try:
# ... YOUR CODE HERE ... #
except Exception as e:
# ... PRINT THE ERROR MESSAGE ... #
print(e)
在我们的特殊例子中,你要把你的程序从...
x = 42/0
print('Program is still running')
...改为...
try:
x = 42/0
except Exception as e:
print(e)
print('Program is still running')
现在,输出是你想要的。
division by zero
Program is still running
完整的回溯错误信息
为了打印错误信息的完整回溯,并保持程序运行而不因错误而退出,你可以使用一个try/except块与traceback 模块的 [format_exc()](https://docs.python.org/3/library/traceback.html "https://docs.python.org/3/library/traceback.html")函数。
- 用以下方式导入模块
**import traceback**. - 打印错误的完整回溯,用
**print(traceback.format_exc())**.
下面是完整的例子代码。
import traceback
import sys
try:
x = 42/0
except Exception:
print(traceback.format_exc())
print('Program is still running')
The postHow to Print the Exception Without Exiting Your Python Program?first appeared onFinxter.