python 处理异常的方法(Python自学从入门到实践)
在Python中导致程序无法运行的有2种情况。
1;语法错误,这是致命错误,需要重新查看代码进行修改,比如:缩进问题,比如关键字错误。
2;程序异常,这不是致命错误,我们可以捕获它。
在Python中处理异常是用try - except代码代码块来处理的。
学习这章的目的是:告诉Python发生异常时怎么办。使用try-except代码块后,即便出现异常,程序也将继续运行:我们可以编写的友好的错误消息,而不是令用户迷惑的traceback。
举个例子:
zeroDivisionError: integer division or modulo by zero
大概意思是说;除数不能为0.
如何通过try - except,捕获这个异常,并且不会出现程序异常呢?
def ceshi(a,b):
return a//b
b=int(input('请输入一个除数:'))
a=int(input('请输入一个被除数:'))
try:
print(ceshi(a,b))
except ZeroDivisionError:
print('除数不能为0')
这样来看,就算除数输入0,也不会出现异常,不过还有一个问题,就是程序结束了,应该要让用户知道不能输入0之后,能输入其他数才对。加入一个while循环 和 退出条件完善一下:
def ceshi(a,b):
return a//b
while True:
b = input('请输入一个除数:')
if b =='退出':
break
else:
a = int(input('请输入一个被除数:'))
b = int(b)
try:
print(ceshi(a,b))
except ZeroDivisionError:
print('除数不能为0')
现在需要思考另外一个问题了,就是except 后面到底应该跟什么内容呢?我发现后面可以跟很多内容,都是大写字母开头的,我们可能需要记得少部分,但不需要全部去记忆,可以当发生异常的时候,把异常的第一段加入进去 即可。再看一个例子:
我想读取一个不存在的文件,Python抛出了异常:FileNotFoundError。现在我可以利用这个异常,捕获它,然后提醒用户;
FileNotFoundError。现在我可以利用这个异常,捕获它,然后提醒用户;
dizhi ="/Users/xuxizhi/Desktop/Python523.txt"
try:
with open(dizhi,'r',encoding='utf-8')as a:
a.write('我想用只读的方式打开这个文件,但现在这个文件不存在,应该会出现异常')
except FileNotFoundError:
print(f"提醒~提醒~{dizhi}不存在,无法读取")
那是不是任何的异常都可以捕获呢?我们多试试。
异常的开头是:ValueError 我们来试试捕获它。
在实际运用中,客户的输入总是会出现奇怪的情况,为了让程序正常运行,我们需要捕获异常,并且告知客户应该怎么输入才正确,这样可以给到客户良好的体验。
来看下面的案例,比较两个数的大小:1;要求客户输入的是数值,2;并且限定了输入数值的范围(这仅仅是我做试验用的方法)
def ceshi(a, b):
if a > b:
return f"{a}比{b}大"
else:
return f"{a}比{b}小"
while True:
try:
a = int(input('请输入数值a:'))
except ValueError:
print('只能输入数值哈 输入其他都没有用')
else:
if a > 10:
print('填入的数值不能大于10')
continue
else:
print('输入正确')
break
while True:
try:
b = int(input('请输入数值b:'))
except ValueError:
print('只能输入数值哈 输入其他都没有用')
else:
if b > 10:
print('填入的数值不能大于10')
continue
else:
print('输入正确')
break
print(ceshi(a, b))
我们需要学会这种方法,其目的是让程序能够正常运行并给客户良好的体验,同时也加深我们对可能发生的所有情况都计算在内。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com