0
点赞
收藏
分享

微信扫一扫

Python轻松入门-40 异常

waaagh 2022-09-04 阅读 189


视频教程下载链接:​​http://pan.baidu.com/s/1pKP7zDL​​​ 配套教程下载:​​​http://pan.baidu.com/s/1qYdI6q4​​ 大家好,这节课,我们来学习异常,什么是异常呢?首先,我们得区分语法错误和异常的区别,因为当我们在编写或者调试程序的时候,它们看起来非常相似,但是却是截然不同的2个东西,所以现在,我们写一个简单的程序来说明具体的概念和区别,首先,我们定义一个变量来获取用户的输入,这里需要使用到input函数:

numb = input("你最喜欢的数字是?")

所以这行代码的意思是获取用户的输入,然后将输入转化为numb变量,由于input返回的是一个字符串,所以这里我们把它转化为int:

numb = int(input("你最喜欢的数字是?"))

然后我们将这个数字打印出来:

print(numb)

运行,我最喜欢的数字是2,你看,屏幕中打印出了2: 图 7‑11 一切都很顺利,但是假如这里我输入的不是数字而是字符,比如说这里我输入two,运行: 图 7‑12 这里提示ValueError,这是因为你不可以将一个字符串two通过int函数转换为数字。所以即使我们的代码没有语法错误,程序还是可以在运行的时候出现异常,所以这就是语法错误和异常的区别。这里所说的语法错误是指代码本身的错误,比如说input输成了in put,当然这不合理,这就是语法错误,运行: 图 7‑13 你看,直接报了语法错误:SyntaxError,而我们刚才是ValueError。ValueError是异常的一种类型,它通常是在我们尝试把一个类型转换为整型失败时,会被触发。 其实,异常有很多种类,在我们编写程序时,当然不允许异常的发生,因为这样会中止程序的运行。就像我们刚刚举的例子一样,如果输入的不是数字,会触发异常,从而终止程序的运行。所以接下来,我们将来展示如何去处理异常。 首先,我们写一个While循环,它的判断条件始终为true,这样的循环只有在出现break语句时,才会正常的终止。

while True:

接下来,我们来使用try语句处理异常,所以首先,输入关键字try,然后分号回车,输入我们想要执行功能的代码,这里我们输入课程开始时的代码,最后记得break掉这个循环:

try:
numb = int(in put("你最喜欢的数字是?"))print(18/numb)break

所以,什么时候你会用到try语句呢?就是当你感觉你编写的某段代码极有可能抛出异常时,就可以使用try语句捕获异常,然后对异常进行处理。 我们来看这段代码,如果我最喜欢的数字是2,那么程序会打印出18/2也就是9,然后break掉,没有任何问题,那么如果这里输入的是一个字符串’two’,这个时候就需要使用关键字except来捕获异常了,并且可以提示"请确保输入的是数字":

except ValueError:
print("请确保输入的是数字")

以上是一个简单的处理异常的例子程序,它可以提高程序的健壮性。我们不妨调试程序来增加大家的理解,首先在这2个地方下断点: 图 7‑14 当我们输入2时,程序直接break掉,没有捕获任何异常: 但是如果我们输入“two”时: 图 7‑15 你看,这里成功的捕获了异常,并输出提示: 图 7‑16 因为这里我们成功的捕获了异常,所以这里While循环不会被终止,我们还可以接着输入,直到输入数字时,循环会通过break中止。 实际上,ValueError只是众多异常中的一种,它只在类型转换为int型失败时被触发。我们可以继续运行这个程序来看另一种异常,如果我们这里输入数字是0,运行: 图 7‑17 你看,它抛出了一个除数为0错误的异常,这是因为0是不能作为除数的,18/0,触发了这个异常,同样,我们可以来捕获并处理这个异常:

except ZeroDivisionError:
print("除数不能为0")

如果再输入0,程序会捕获到这个异常并输出。 有时候我们会遇到这种情况,你预感到程序会触发异常,但是不知道程序会触发哪种异常,这时候,可以直接通过关键字except捕获所有的异常:

except:
break

但是在百分之99的情况下我不推荐大家这样做,因为这样做后,你的代码容易隐藏很多bug,因为很多错误都通过异常捕获了,从而不会反映到程序中。所以大家最好只捕获你想捕获的异常。 最后呢,我们来介绍关键字finally,它的意思是,不管有没有触发异常,都要执行finally后面的语句,比如说这里输入:

finally:
print("本次循环结束")

这样,不管有没有触发异常,都会打印出"本次循环结束"。 所以这就是关于异常的全部内容,非常繁琐,但很有必要,特别是在使用Python进行界面开发的时候。 更多精彩内容尽在视频中!



举报

相关推荐

0 条评论