二、try和except结构
try...一个except结构
这种结构是最常见, 也是最常用的结构
语法结构
try:
被监控的可能引发异常的语句块
exceptBaseException[ase]:
异常处理语句块
注意事项:
- try 块包含着可能引发异常的代码, except 块则用来捕捉和处理发生的异常
- 执行的时候,如果 try 块中没有引发异常,则跳过 ecept 块继续执行后续代码
- 执行的时候,如果 try 块中发生了异常,则跳过 try 块中的后续代码,跳到相应的 except 块中处理异常. 异常处理完后,继续执行后续代码
实操代码
defa():
print("runina()start!")
try:
num=1/0
exceptBaseExceptionase:
print("捕获异常之后执行此处代码")
print("runina()end!")
defb():
print("runinb()start!")
a()
print("runinb()end!")
defc():
print("runinc()start!")
b()
print("runinc()end!")
print("step1")
c()
print("step2")
try...多个except结构
try...except 的结构可以捕获所有的异常,工作中也很常见. 但是,一般建议尽量捕获可能出现的多个异常(按照先子类后父类的顺序),并且针对性写出异常处理代码 为了避免遗漏可能出现的异常,可以在最后增加 BaseException 。结构如下
语法结构
try:
被监控的、可能引发异常的语句块
exceptException1:
处理Exception1的语句块
exceptException2:
处理Exception2的语句块
[...]
except BaseException:
处理可能遗漏的异常的语句块
实操代码
try:
a=input("请输入被除数:")
b=input("请输入除数:")
result=float(a)/float(b)
print(result)
exceptZeroDivisionError:
print("异常:0不能做除数")
exceptValueError:
print("异常:输入的必须是数值类型!")
exceptBaseExceptionase:
print(e)
print(type(e))
try...except...else结构
在 try...except...else 结构的基础上增加了 else 块 .如果 try 块中没有抛出异常,则执行else 块. 如果 try 块中抛出异常,则执行 except 块,不执行 else 块.
语法结构
try:
被监控的可能引发异常的语句块
exceptBaseException[ase]:
异常处理语句块
else:
没有抛出异常时执行的语句块
实操代码
try:
a=input("请输入被除数:")
b=input("请输入除数:")
result=float(a)/float(b)
exceptBaseExceptionase:
print(e)
else:
print("两数相除,结果是:",result)
try...except...finally结构
try...except...finally 结构中, finally 块无论是否发生异常都会被执行, 通常用来释放 try 块中申请的资源
语法结构
try:
被监控的可能引发异常的语句块
exceptBaseException[ase]:
异常处理语句块
finally:
无论是否捕获异常都会执行的语句块
实操代码
try:
a=input("请输入被除数:")
b=input("请输入除数:")
result=float(a)/float(b)
exceptBaseExceptionase:
print(e)
else:
print("两数相除,结果是:",result)
finally:
print("我是finally中的语句, 无论发生异常与否, 都执行!")
实操代码2
try:
f=open("d:/a.txt",'r')
print(content)
exceptBaseExceptionase:
print(e)
finally:
f.close()#释放资源. 此处也可能会发生异常。若发生异常,则程序终止,不会继续往下执行
print("step4")
-
程序
+关注
关注
116文章
3777浏览量
80851 -
python
+关注
关注
56文章
4782浏览量
84453
发布评论请先 登录
相关推荐
评论