异常比较有趣的地方是可对其进行处理,通常称之为捕获异常。为此,可使用 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的话只需要一个错误处理程序。