目录
一.python提供了异常处理机制,可以在异常出现时即使捕获,然后内部“消化”,让程序继续运行
四.try...except...else...finally结构
一.python提供了异常处理机制,可以在异常出现时即使捕获,然后内部“消化”,让程序继续运行
try:
编译内容
except error类型: #error类型可不写,不写默认所有error
打印的内容
n1=int(input("请输入第一个数字:"))
n2=int(input("请输入第二个数字:"))
print(n1/n2)
输出:
请输入第一个数字:1
请输入第二个数字:0
Traceback (most recent call last):
File "D:\Program Files\Python\Python\ZiDongHuaStudy\Study\demo17.py", line 10, in <module>
print(n1/n2)
ZeroDivisionError: division by zero #ZeroDivisionError错误类型
------------------------------------------
try:
n1=int(input("请输入第一个数字:"))
n2=int(input("请输入第二个数字:"))
print(n1/n2)
except ZeroDivisionError: #ZeroDivisionError捕获的error类型
print("除数不能为0")
输出:
请输入第一个数字:10
请输入第二个数字:0
除数不能为0
-------------------------------------
try:
n1=int(input("请输入第一个数字:"))
n2=int(input("请输入第二个数字:"))
print(n1/n2)
except:
print("除数不能为0")
输出:
请输入第一个数字:1
请输入第二个数字:0
除数不能为0
二.多个except结构
·捕获异常的顺序按照先子类后父类的顺序,为了避免遗漏可能出现的异常,可以在最后增加BaseException
try:
n1=int(input("请输入第一个数字:"))
n2=int(input("请输入第二个数字:"))
print(n1/n2)
except ZeroDivisionError:
print("除数不能为0")
except ValueError:
print("不能输入非数字的字符")
except BaseException as e:
print(e)
三.try...except...else结构
·如果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块
try:
n1=int(input("请输入第一个数字:"))
n2=int(input("请输入第二个数字:"))
except ZeroDivisionError:
print("除数不能为0")
except ValueError:
print("不能输入非数字的字符")
except BaseException as e:
print(e)
else:
print("结果为:",n1/n2)
print("程序结束")
输出:
请输入第一个数字:1
请输入第二个数字:2
结果为: 0.5
程序结束
四.try...except...else...finally结构
·finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源
try:
n1=int(input("请输入第一个数字:"))
n2=int(input("请输入第二个数字:"))
except ZeroDivisionError:
print("除数不能为0")
except ValueError:
print("不能输入非数字的字符")
except BaseException as e:
print(e)
else:
print("结果为:",n1/n2)
finally:
print("无论是否产生异常,总会被执行的代码")
输出:
请输入第一个数字:1
请输入第二个数字:0
无论是否产生异常,总会被执行的代码
Traceback (most recent call last):
File "D:\Program Files\Python\Python\ZiDongHuaStudy\Study\demo17.py", line 52, in <module>
print("结果为:",n1/n2)
ZeroDivisionError: division by zero