python学习(八)-错误处理

捕获错误

try:
    print('try...')
    r = 10 / 0
    print('result:', r)
except ZeroDivisionError as e:
    print('except:', e)
finally:
    print('finally...')
print('END')

但是finally如果有,则一定会被执行(可以没有finally语句)。
ython所有的错误都是从BaseException类派生的,常见的错误类型和继承关系看这里:

https://docs.python.org/3/library/exceptions.html#exception-hierarchy

抛出错误

因为错误是一个类,捕获一个错误就是捕获到该class的一个实例,python内置函数会抛出很多类型的错误,若要抛出错误,首先根据需求,定义一个错误的class,选择好继承关系,然后用raise语句抛出一个错误的实例


def foo(s):
    n = int(s)
    if n==0:
        raise ValueError('invalid value: %s' % s)
    return 10 / n

def bar():
    try:
        foo('0')
    except ValueError as e:
        print('ValueError!')
        raise

bar()

推荐阅读更多精彩内容

  • pdf下载地址:Java面试宝典 第一章内容介绍 20 第二章JavaSE基础 21 一、Java面向对象 21 ...
    王震阳阅读 88,754评论 26 537
  • 一、简介 Python最强大的结构之一就是它的异常处理能力,所有的标准异常都使用类来实现,都是基类Exceptio...
    随风化作雨阅读 1,645评论 0 1
  • 高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。 ...
    时间之友阅读 203评论 0 0
  • 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作...
    蝴蝶兰玫瑰阅读 127评论 1 1
  • 暑假的时候去了趟贵州,三国时期的蜀地,当然肯定去了世界上最大瀑布群--黄果树瀑布,然后在我的朋友那儿住了将近一个...
    WS小冰歌阅读 93评论 0 5