这种结构是最常见, 也是最常用的结构
语法结构
try:
被监控的可能引发异常的语句块
except BaseException [as e]:
异常处理语句块
注意事项:
实操代码
def a():
print("run in a() start! ")
try:
num = 1 / 0
except BaseException as e:
print("捕获异常之后执行此处代码")
print("run in a() end! ")
def b():
print("run in b() start! ")
a()
print("run in b() end! ")
def c():
print("run in c() start! ")
b()
print("run in c() end! ")
print("step1")
c()
print("step2")
try...except 的结构可以捕获所有的异常,工作中也很常见. 但是,一般建议尽量捕获可能出现的多个异常(按照先子类后父类的顺序),并且针对性写出异常处理代码 为了避免遗漏可能出现的异常,可以在最后增加 BaseException 。结构如下
语法结构
try:
被监控的、可能引发异常的语句块
except Exception1:
处理Exception1的语句块
except Exception2:
处理Exception2的语句块
[...]
except BaseException:
处理可能遗漏的异常的语句块
实操代码
try:
a = input("请输入被除数: ")
b = input("请输入除数: ")
result = float(a)/float(b)
print(result)
except ZeroDivisionError:
print("异常: 0不能做除数")
except ValueError:
print("异常: 输入的必须是数值类型!")
except BaseException as e:
print(e)
print(type(e))
在 try...except...else 结构的基础上增加了 else 块 .如果 try 块中没有抛出异常,则执行else 块. 如果 try 块中抛出异常,则执行 except 块,不执行 else 块.
语法结构
try:
被监控的可能引发异常的语句块
except BaseException [as e]:
异常处理语句块
else:
没有抛出异常时执行的语句块
实操代码
try:
a = input("请输入被除数: ")
b = input("请输入除数: ")
result = float(a)/float(b)
except BaseException as e:
print(e)
else:
print("两数相除, 结果是:", result)
try...except...finally 结构中, finally 块无论是否发生异常都会被执行, 通常用来释放 try 块中申请的资源
语法结构
try:
被监控的可能引发异常的语句块
except BaseException [as e]:
异常处理语句块
finally:
无论是否捕获异常都会执行的语句块
实操代码
try:
a = input("请输入被除数: ")
b = input("请输入除数: ")
result = float(a)/float(b)
except BaseException as e:
print(e)
else:
print("两数相除, 结果是:", result)
finally:
print("我是finally中的语句, 无论发生异常与否, 都执行!")
实操代码2
try:
f = open("d:/a.txt",'r')
content = f.readline()
print(content)
except BaseException as e:
print(e)
finally:
f.close() #释放资源. 此处也可能会发生异常。若发生异常,则程序终止,不会继续往下执行
print("step4")
全部0条评论
快来发表一下你的评论吧 !