Python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(traceback,一种错误信息)终止执行。
事实上,每个异常都是一些类的实例,这些实例可以被引发,并且可以用很多种方法进行捕捉,使得程序可以捉住错误并且对其进行处理,而不是让整个程序失效。
捕捉异常
关于异常可以处理它们(诱捕或者捕捉异常)。用try/except语句实现。下来我们来看一个例子:
while True:
try:
x = input('Enter the first number:')
y = input('Enter the second number:')
value = x/y
print 'x/y is:',value
except:
print 'Invalid input. Please try again.'
else:
break
程序结果表明,这里的whilt True:循环只在没有异常引发的情况下才会退出,只要有错误发生,程序会不断要求重新输入。
其实,我们可以将except 中的代码改为更有效的异常输出信息
#python 2中
while True:
try:
x = input('Enter the first number:')
y = input('Enter the second number:')
value = x/y
print 'x/y is:',value
except Exception,e:
print 'Invalid input: ',e #
print 'Please try again.'
else:
break
小结
(1)异常对象。异常情况(比如错误)可以用异常对象表示。它们可以用几种方法处理,但是如果忽略的话,程序就会终止。
(2)警告。类似于异常,但是一般来说仅仅打印错误信息。
(3)捕捉异常。使用try/except子句。
(4)else子句。除了except子句,可以使用else子句。如果主try块没有引发异常,else子句就会被执行。
(5)finally。如果需要确保某些代码不管是否有异常引发都要执行(例如清理代码del),那么这些代码可以放置在finally子句中。