Python异常学习笔记
异常(exceptions)是Python中一种非常重要的类型,它和语法错误不同,是在程序运行期间引发的错误。Python中内置了很多异常,如IOError,NameError,KeyboardInterrupt等,更多的异常可以点击这里。 异常的意义在于提供一种更加优雅的运行方式,例如用Python编写一个计算器,如果用户输入不能计算的对象,则可以抛出异常,并进行处理,如下: while True: try: x= int(input('Please In enter A number:')) print "Your Input is %s"%x break except Exception,e: print e Python是一门面向对象的语言,异常本身也是对象,用dir(Exception)查看Exception类的属性,如下:[‘__class__',‘__delattr__',‘__dict__',‘__doc__',‘__format__',‘__getattribute__',‘__getitem__',‘__getslice__',‘__hash__',‘__init__',‘__new__',‘__reduce__',‘__reduce_ex__',‘__repr__',‘__setattr__',‘__setstate__',‘__sizeof__','__str__',‘__subclasshook__',‘__unicode__',‘args',‘message'],除开args和message外,其余的均为其内部属性,其中args是传递给异常类的构造函数的一个类型为元祖的参数,一些内置函数,如IOError需要它接收多个参数,其它的则直接是直接传递一个错误提示字符串。 Python的异常可以通过try语句来检查,任何在try语句块里的代码都会被监测,检查有无异常产生,except会根据输入检查异常的类型,并执行except内的代码。那么,这里就不禁要问问,except后面的两个参数到底是什么?如果第一个是错误的类型,那么第二参数呢?对其进行检测,发现它是属于Exception的实例,也就是说,它是由异常类产生的一个具体的异常对象。 #!/usr/bin/env python class MyError(Exception): def __init__(self,*args): self.value=args[0] def __str__(self): return repr(self.value) def showname(*args): if args: print args else: raise MyError('Error: need 1 arguments at last,0 Input') 把这个文件保存为showname.py,其它模块就可以引入调用showname函数,并对它执行的结果进行检测: #!/usr/bin/env python import showname try: showname.showname() except showname.MyError,e: print e 值得注意的几点是:1,python中用raise抛出异常; 2,由于所有异常都是继承自Exception,所以,当不确定异常类型的时候,可以在except后面直接接Exception来捕获所有异常;3,由于异常的继承关系,异常内的所有属性都是可以被重定义的,也可以在自定义的异常上增加属性。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |