'''
通常,程序抛出异常时,会终止程序,并显示异常相关信息
而一般情况下我们使用try-exception避免异常抛出直接导致的程序崩溃
这里再介绍一种异常重定向的方法,也可避免异常抛出直接导致的程序崩溃。
通过使用traceback.format_exc将异常重定向为字符串
同时,可再将该字符串写入一个文本文件中,用于后续日志查询定位。
'''try:
# 手动制造异常raise Exception("This is a exception")
except Exception:
error_file=open(r"test\error.txt","w")
# traceback.format_exc将异常重定向为字符串,并写入error_file文件中
error_file.write(traceback.format_exc())
error_file.close()
- 断言
'''
python程序中,我们可以使用print语句来排查程序中的bug,而此种方式在程序回显内容过多时较为麻烦
此时,我们可以使用python中的断言机制来判断程序中是否存在bug(检查不通过会抛出异常)
通过 assert 判断真假(True or False),回显内容字符串 的格式,
当判断真假为真(True),则不会抛出异常
当判断真假为假(False),则抛出AssertionError异常,并显示"回显内容字符串"
'''# 假定程序中podBayDoorStatus的值应为open,而实际赋值也为open,故这里断言检测通过,不会抛出异常
podBayDoorStatus = 'open'assert podBayDoorStatus == 'open', 'The pod bay doors need to be "open".'# 假定程序中podBayDoorStatus的值应为open,而实际赋值不为open,故这里断言检测不通过,会抛出异常AssertionError,且后面的提示语为The pod bay doors need to be "open"
podBayDoorStatus = 'I\'m sorry, Dave. I\'m afraid I can\'t do that.'assert podBayDoorStatus == 'open', 'The pod bay doors need to be "open".''''
回显如下,抛出AssertionError,且会显示assert语句最后编辑的字符串作为提示:
Traceback (most recent call last):
File "D:/编程/rumen-10.py", line 33, in <module>
assert podBayDoorStatus == 'open', 'The pod bay doors need to be "open".'
AssertionError: The pod bay doors need to be "open".
'''