本帖最后由 frances720 于 2016-4-26 10:38 编辑
3.6 异常Python用异常对象(exception object来表示异常情况。遇到错误后,会引发异常。如果异常对象未被处理或捕捉,程序会用所谓的回溯(Traceback,一种错误信息)终止执行。 Python提供try..except..语句来接收这个异常。 在python中所有的异常都继承Exception,所以我们可以使用它来接收所有的异常。 Abnormal.py
Try: Open(“abc.txt”,”r”) Printaa Except Exception: Print “异常了”
从python2.5版本之后,所有异常类有了新的基类BaseException,Exception同样也继承BaseException,所以我们也可以使用BaseException来接收所有的异常。 Python直接输出异常信息: Abnormal.py
Try: Open(“abc.txt”,”r”) Printaa Except BaseException,msg: Print msg
在BaseException后面定义msg变量用于接收异常信息,通过print将其打印出来: Python中常见的异常:
BaseException 新的所有异常类的基类 Exception 所有异常类的基类,但继承BaseException 类 AssertionError assert 语句失败 AttributeError 试图访问一个对象没有属性 IOError 输入输出异常,试图打一个不存的文件(包括其它情况)时引起 NameError 使用一个还未赋值对象的变量 IndexError 在使用序列中不存在的所引进引发 IndentationError 语法错误,代码没有正确的对齐 KeyboardInterrupt Ctrl+C 被按下,程序被强行终止 TypeError 传入的对象类型与要求不符 SyntaxError Python 代码逻辑语法出错,不能执行
3.6.2更多异常用法 try...except 与else 配合使用: Abnormal.py
Try: Open(“abc.txt”,”r”) Printaa Except BaseException,msg: Print msg
Else:
Print ‘没有异常!’
Else语句只有在没有异常的情况下才会被执行,但是有些情况下不管是否出现异常这些操作都能被执行,比如文件的关闭,所得释放,把数据库连接返还给连接池等操作。我们可以使用Try…finally..语句来完成。 首先创建一个poem.txt文件: Pome.txt
ABC EFG HIJK LMN OPQ
通过一个小程序来读取文件中的内容。 ReadFile.py
#coding=utf-8 Import time
Files=file(“poem.txt”,”r”) Strs=Files.readlines()
Try: For I in strs: Print I Time.sleep(1) Finally: Files.close() Print “Clean up…closed the file”
3.6.3抛出异常 Python中提供raise方法来抛出一个异常:Abnormal.py
Filename=raw_input(‘please input filename:’) If filename==’hello’: Raise NameError(‘input file name error!’)
|