异常 / try..except
我们尝试读取用户的一段输入。按Ctrl-d,看一下会发生什么。
>>> s = raw_input('Enter something --> ')
Enter something --> Traceback (most recent call last):
File "<stdin>", line 1, in ?
EOFError
Python引发了一个称为EOFError
的错误,这个错误基本上意味着它发现一个不期望的 文件尾 (由Ctrl-d表示)
接下来,我们将学习如何处理这样的错误。
处理异常
我们可以使用try..except
语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。
例13.1 处理异常
#!/usr/bin/python
# Filename: try_except.pyimport
sys
try
:
s =
raw_input
(
'Enter something --> '
)
except
EOFError:
print
'\nWhy did you do an EOF on me?'
sys
.exit()
# exit the program
except
:
print
'\nSome error/exception occurred.'
# here, we are not exiting the program
print
'Done'
(源文件:code/try_except.py)
输出
$ python try_except.py
Enter something -->
Why did you do an EOF on me?
$ python try_except.py
Enter something --> Python is exceptional!
Done
它如何工作
我们把所有可能引发错误的语句放在try
块中,然后在except
从句/块中处理所有的错误和异常。except
从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try
从句,至少都有一个相关联的except
从句。
如果某个错误或异常没有被处理,默认的Python处理器就会被调用。它会终止程序的运行,并且打印一个消息,我们已经看到了这样的处理。
你还可以让try..catch
块关联上一个else
从句。当没有异常发生的时候,else
从句将被执行。
我们还可以得到异常对象,从而获取更多有个这个异常的信息。这会在下一个例子中说明。