Python基础教程8.3 捕获异常

8.3 捕获异常

前面说过,异常比较有趣的地方是可对其进行处理,通常称之为捕获异常。为此,可使用try/except语句。假设你创建了一个程序,让用户输入两个数,再将它们相除,如下所示:

x = int(input('Enter the first number: '))

y = int(input('Enter the second number: '))

print(x / y)

这个程序运行正常,直到用户输入的第二个数为零。

Enter the first number: 10

Enter the second number: 0

Traceback (most recent call last):

File "exceptions.py", line 3, in ?

print(x / y)

ZeroDivisionError: integer division or modulo by zero

为捕获这种异常并对错误进行处理(这里只是打印一条对用户更友好的错误消息),可像下面这样重写这个程序:

try:

x = int(input('Enter the first number: '))

y = int(input('Enter the second number: '))

print(x / y)

except ZeroDivisionError:

print("The second number can't be zero!")

使用一条if语句来检查y的值好像简单些,就本例而言,这可能也是更佳的解决方案。然而,如果这个程序执行的除法运算更多,则每个除法运算都需要一条if语句,而使用try/except的话只需要一个错误处理程序。

注意 异常从函数向外传播到调用函数的地方。如果在这里也没有被捕获,异常将向程序的最顶层传播。这意味着你可使用try/except来捕获他人所编写函数引发的异常。有关这方面的详细信息,请参阅8.4节。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181110G0FL2T00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券