Python学习(十一)--异常

一、定义

Python用异常对象来表示异常情况。遇到错误后,会引发异常,如果异常对象并没有被处理或者捕捉,程序就会用所谓的回溯(traceback)终止执行。

每个异常都是一些类的实例,这些实例可以被引发,并且可以用很多方法进行捕捉。

 

二、raise语句引发异常

>>> raise Exception
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception
>>> raise Exception('error error')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Exception: error error

Exception是所有异常类的基类。其它一些常见异常类可以查看手册。上面两个例子都通过raise语句引发了异常。第二个例子里加上了错误信息。

 

三、捕捉异常

通过try/except语句可以实现捕捉异常的功能。针对具体的异常,可以在except后面加上异常类,如下:

try:
   x = input('Enter the first number: ')
   y = input('Enter the second number: ')
   print x/y
except ZeroDiyisionError:
   print "the second number can't be zero! "

如果except后面什么异常类也不加,那么就会捕捉所有异常。

如果捕捉到了异常又想重新引发它,可以调用不带参数的raise。

try:
    x = input('Enter the first number: ')
    y = input('Enter the second number: ')
    print x/y
except ZeroDiyisionError:
    raise 

四、捕捉多个异常

第一种方法可以使用多个except子句,针对每种情况说明。

try:
    x = input('Enter the first number: ')
    y = input('Enter the second number: ')
    print x/y
except ZeroDiyisionError:
    print "the second number can't be zero! "
except TypeError:
    print "That was't a number!
当然也可以将异常类型作为元组列出。
try:
    x = input('Enter the first number: ')
    y = input('Enter the second number: ')
    print x/y
except (TypeError, NameError):
    print "Your numbers were bogus..."

 

五、访问异常对象本身

try:
    x = input('Enter the first number: ')
    y = input('Enter the second number: ')
    print x/y
except (TypeError, NameError),e:
    print e

通过如上方式就可以将错误打印出来。

 

六、使用else 、finally语句

在捕捉异常的时候,也可以联合使用else、finally语句来执行一些操作。

x = None
try:
    x = 1/0
except NameError:
    print "Unknown variable"
else: #无异常时会执行else语句
    print "That went well!"
finally: #不管是否有异常,都会执行finally语句
    print "Cleaning up"

 

posted @ 2017-11-15 10:06  木九九  阅读(196)  评论(0编辑  收藏  举报