异常处理
捕捉异常
- 语法错误无法通过try检测,就像函数一样
try:
1/0
except Exception as e: # Exception是万能异常,因为他是所有报错的超类
print(e)
finally:
print('无论报不报错都运行') # 没用,以前是用来关闭文件的,但是现在有with open
raise
- 主动抛出异常
raise KeyboardInterrupt('中断捕捉')
assert
- 历史遗留问题(以前没有Pycharm智能报错)
处理万能异常
- 之前只是捕捉异常,但是并不是跟踪异常信息,其实很不方便排错
- 使用traceback,获取异常信息
import traceback
try:
raise Exception("asasasas")
except Exception as e:
traceback.print_exc()
print(e)
print("over")
异常跟踪
traceback跟踪异常
import traceback
try:
1/0
except Exception as e:
traceback.print_exc()
输入的结果为:
Traceback (most recent call last):
File"/Users/zhouwanghua/Code/dot/__init__.py", line , in <module>
1 / 0
ZeroDivisionError: division by zero
traceback.print_exc()跟traceback.format_exc()区别:
- format_exc()返回字符串
- print_exc()则直接给打印出来