活动地址:CSDN21天学习挑战赛
除零异常
i = input('请输入数字:')
print(10/int(i))
捕获异常
try-except语句
try:
<可能会引发异常的语句>
except[异常类型]:
<处理异常>
异常类型可省略。
无异常,则结束;有异常,则执行except代码块。
i = input('请输入数字:')
try:
print(10/int(i))
except ZeroDivisionError as e:
print("不能除以0,异常:{}".format(e))
多个except代码块
try:
<可能会引发异常的语句>
except 异常类型1:
<处理异常>
except 异常类型2:
<处理异常>
...
except:
<处理异常>
多个except代码块根据异常类型匹配到不同的except代码块
省略异常类型的except代码块是默认的except代码块,它只能被放到最后,捕获上面没有匹配到的
i = input('请输入数字:')
try:
print(10/int(i))
except ZeroDivisionError as e:
print("不能除以0,异常:{}".format(e))
except ValueError as e:
print("输入的是无效数字,异常:{}".format(e))
多重异常捕获
i = input('请输入数字:')
try:
print(10/int(i))
except (ZeroDivisionError,ValueError) as e:
print("异常发生:{}".format(e))
try-except语句嵌套
i = input('请输入数字:')
try:
j = int(i)
try:
print(10/j)
except ZeroDivisionError as e1:
print("不能除以0,异常:{}".format(e1))
except ValueError as e2:
print("输入的是无效数字,异常:{}".format(e2))
使用finally代码块释放资源
有时在try-except语句中会占用一些资源,可以使用finally代码块。
try:
<可能会引发异常的语句>
except 异常类型1:
<处理异常>
except 异常类型2:
<处理异常>
...
except:
<处理异常>
finally:
<释放资源>
i = input('请输入数字:')
try:
print(10/int(i))
except ZeroDivisionError as e:
print("不能除以0,异常:{}".format(e))
except ValueError as e:
print("输入的是无效数字,异常:{}".format(e))
finally:
print('释放资源')
自定义异常类
class zhangsan(Exception):
def __init__(self,message):
super().__init__(message)
手动引发异常
前面所接触到的异常都是由于解释器引发的,我们也可以通过raise语句手动引发异常。
class zhangsan(Exception):
def __init__(self,message):
super().__init__(message)
i = input('请输入数字:')
try:
print(10/int(i))
except ZeroDivisionError as e:
# print("不能除以0,异常:{}".format(e))
raise zhangsan('不能除以0')
except ValueError as e:
# print("输入的是无效数字,异常:{}".format(e))
raise zhangsan('输入的是无效数字')