《Python基础教程》读书笔记08-异常
尽可能使用 try/except
语句
raise 语句
抛出异常
raise Exception('出错啦') # 参数可选
# Traceback (most recent call last):
# File "<pyshell#117>", line 1, in <module>
# raise Exception('出错啦')
# Exception: 出错啦
自定义异常
继承 Exception 即可
class MyException(Exception):
pass
捕捉异常
try except finally
捕捉多个异常
try:
1/0
except (ZeroDivisionError, TypeError, NameError):
print("出错啦")
# 出错啦
异常对象
Python2.7
try:
1/0
except (ZeroDivisionError, TypeError), e:
print e
# integer division or modulo by zero
Python3
try:
1/0
except (ZeroDivisionError, TypeError) as e:
print(e)
# division by zero
全捕捉
try:
1/0
except: # 一般还是用 except Exception, e
print("出错啦")
# 出错啦
else
没有发生异常运行
try:
print(1/1)
except:
print("出错啦")
else:
print('运算完成')
# 1.0
# 运算完成
异常中的信息
try:
1/0
except Exception, e
print(e)
- str(e)
返回字符串类型,只给出异常信息,不包括异常信息的类型,如 1/0 的异常信息division by zero
- repr(e)
给出较全的异常信息,包括异常信息的类型,如 1/0 的异常信息ZeroDivisionError('division by zero',)
- e.message
Python 3 不可用,Python 2.7 可用,获得的信息同 str(e)
采用 traceback 模块
需要导入 traceback 模块,此时获取的信息最全,与 python 命令行运行程序出现错误信息一致。
- 使用
traceback.print_exc()
打印异常信息到标准错误,就像没有获取一样。 - 使用
traceback.format_exc()
将同样的输出获取为字符串。你可以向这些函数传递各种各样的参数来限制输出,或者重新打印到像文件类型的对象。
import traceback
try:
1/0
except Exception as e:
print(traceback.print_exc())
# Traceback (most recent call last):
# File "<pyshell#166>", line 2, in <module>
# ZeroDivisionError: division by zero
# None
try:
1/0
except Exception as e:
print (traceback.format_exc())
# Traceback (most recent call last):
# File "<pyshell#168>", line 2, in <module>
# ZeroDivisionError: division by zero
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com
文章标题:《Python基础教程》读书笔记08-异常
文章字数:485
本文作者:Bin
发布时间:2017-01-01, 22:38:13
最后更新:2019-08-06, 00:07:35
原始链接:http://coolview.github.io/2017/01/01/Python%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/%E3%80%8APython%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B%E3%80%8B%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B008-%E5%BC%82%E5%B8%B8/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。