《Python基础教程》读书笔记08-异常

  1. raise 语句
  2. 自定义异常
  3. 捕捉异常
    1. 捕捉多个异常
  4. 异常对象
    1. Python2.7
    2. Python3
  5. 全捕捉
  6. else
  7. 异常中的信息
  8. 采用 traceback 模块

尽可能使用 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
# 运算完成

异常中的信息

Python中获取异常(Exception)信息

try:
    1/0
except Exception, e
    print(e)
  1. str(e)
    返回字符串类型,只给出异常信息,不包括异常信息的类型,如 1/0 的异常信息 division by zero
  2. repr(e)
    给出较全的异常信息,包括异常信息的类型,如 1/0 的异常信息 ZeroDivisionError('division by zero',)
  3. 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" 转载请保留原文链接及作者。

目录