python—raise异常捕获

2019-10-10  本文已影响0人  小二哥很二

1、raise的作用:显式的抛出异常。当出现异常时,raise后面的语句就不会执行

def test(count):
    if count == 100:
        raise ValueError("I am error")
    print(count)
test(100)

运行结果:
>>
Traceback (most recent call last):
  File "D:/PycharmProjects/wangyongha/爬虫/pachong.py", line 718, in <module>
    test(100)
  File "D:/PycharmProjects/wangyongha/爬虫/pachong.py", line 715, in printCount
    raise ValueError("I am error")
ValueError: I am error
<<
※如果test()传参不等于100,那么就直接执行print(count)语句

2、raise后面可以是一个class、也可以是一个对象

def test(count):
    if count == 100:
        raise ValueError("I am error")       #这是实例对象
        #raise ValueError                    #这是class
    print(count)

try:
    test(100)
except ValueError as e:  #e为ValueError对象
    print(e)
或者
# try:
#     test(100)
# except ValueError:
#     print('我捕获到一个valueError错误')

运行结果:
>>
I am error
<<

3、try...except...else

res = "lily"

try:
    # int(res)
    res[12]
# 捕获异常类型会从上往下执行,如果都没有对应的类型错误,才执行到“Exception”
except ValueError as e:
    print("ValueError", e)
except IndexError as e:
    print("IndexError", e)
except Exception as e:
    print("Exception", e)
# 如果没有异常,则执行else操作
else:
    print('I love U lily')

# 一般执行清理工作findlly
finally:
    print('无论是否引发异常,都执行findlly代码块')

结果:
IndexError string index out of range
无论是否引发异常,都执行findlly代码块
上一篇下一篇

猜你喜欢

热点阅读