Python 基础之异常

来源:互联网 发布:淘宝自主品牌女装 编辑:程序博客网 时间:2024/05/22 09:49

  • 异常
    • 什么是异常
    • 按自己的方式出错
      • raise语句
      • 自定义异常类
      • 捕捉异常
      • 多条except子句
      • 用一个块捕捉两个异常
      • 捕捉对象
      • else
      • 最后

异常

什么是异常

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

>>> 1/0Traceback (most recent call last):  File "<pyshell#0>", line 1, in <module>    1/0ZeroDivisionError: division by zero

事实上每个异常都是一些类的实例,这些实例可以被引发,并且可以用很多种方法进行捕捉,是的程序可以捉住错误并且进行处理,而不是让整个程序失败。

按自己的方式出错

异常可以在某些东西出错时自动引发,甚至创建自己的异常类型。

raise语句

为了引发异常,可以使用一个类(Exceptiond的子类)或者实例参数调用raise语句。

>>> raise IOErrorTraceback (most recent call last):  File "<pyshell#1>", line 1, in <module>    raise IOErrorOSError>>> raise IOError("error")Traceback (most recent call last):  File "<pyshell#2>", line 1, in <module>    raise IOError("error")OSError: error

自定义异常类

尽管內建的异常类已经包括了大部分的情况,而且对于很多要求都已经满足了。但是!!!在有些时候还是要创建自己的异常类。方法是使用继承来实现。但是是必须从Exception类继承(也可以是其子类)。

class NewException(Exception):    pass

捕捉异常

捕捉异常使用try/except来实现。

try:    x=10    y=0    print (x / y)except ZeroDivisionError:    print("y can't be zero!")# result:# y can't be zero!

多条except子句

try:    x=input("Enter the first number: ")    y=input("Enter the second number: ")    print(x/y)except ZeroDivisionError:    print("The second number can't be zero!")except TypeError:       print("That wasn't a number,was it?")#result:#That wasn't a number,was it?

用一个块捕捉两个异常

将其作为元祖列出

try:    x=input("Enter the first number: ")    y=input("Enter the second number: ")    print(x/y)ex自cept (ZeroDivisionError,TypeError,NameError):    print("Your name were bogus...")

捕捉对象

try:    x=10    y=0    print(x/y)except(ZeroDivisionError,TypeError,NameError) as e:    print(e)

这种写法可以将异常打印出来

else

try :    print ("A is simple task")except :    print('What?')else:    print("It went as planed.")

自行领悟其中精髓

最后。。。

不管try子句中是否发生异常,finally子句一定会执行。

try:    x = 2/4except NameError:    print("Unknow variable")else :    print("That went well")finally:    print("Cleaning up")
原创粉丝点击