python 3 try-except 全部出错
python 3 try-except all with error
是否可以在不捕获所有可能的异常的情况下执行 try-except catch all 仍然显示错误?我有一个情况,在脚本 运行 24/7 中每隔几天每天都会发生一次异常。我不能让脚本死掉,但它们也无关紧要,因为只要我尝试除了所有内容,它都会重试。因此,当我追踪任何最后的罕见异常时,我想将它们记录到一个文件中以供将来调试。
示例:
try:
print(555)
except:
print("type error: "+ str(the_error))
有什么方法可以用堆栈跟踪或类似的东西替换 the_error
?
是的,你可以 catch all errors 像这样:
try:
print(555)
except Exception as e:
print("type error: " + str(e))
对于堆栈跟踪,我通常使用 traceback 模块:
import traceback
try:
print(555)
except Exception as e:
print("type error: " + str(e))
print(traceback.format_exc())
你可以做到:
try:
print(555)
except Exception as err:
print("Erro {}".format(err))
或使用raise
Docs永远是你的朋友
Tip: Avoid use "except:"
使用更具描述性的内容,例如
...
except (ValueError, KeyError):
除非你的代码经过很好的测试,否则你无法找出每一个错误。
是否可以在不捕获所有可能的异常的情况下执行 try-except catch all 仍然显示错误?我有一个情况,在脚本 运行 24/7 中每隔几天每天都会发生一次异常。我不能让脚本死掉,但它们也无关紧要,因为只要我尝试除了所有内容,它都会重试。因此,当我追踪任何最后的罕见异常时,我想将它们记录到一个文件中以供将来调试。
示例:
try:
print(555)
except:
print("type error: "+ str(the_error))
有什么方法可以用堆栈跟踪或类似的东西替换 the_error
?
是的,你可以 catch all errors 像这样:
try:
print(555)
except Exception as e:
print("type error: " + str(e))
对于堆栈跟踪,我通常使用 traceback 模块:
import traceback
try:
print(555)
except Exception as e:
print("type error: " + str(e))
print(traceback.format_exc())
你可以做到:
try:
print(555)
except Exception as err:
print("Erro {}".format(err))
或使用raise
Docs永远是你的朋友
Tip: Avoid use "except:"
使用更具描述性的内容,例如
...
except (ValueError, KeyError):
除非你的代码经过很好的测试,否则你无法找出每一个错误。