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代码块
网友评论