1 什么是异常
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
2 常见的异常的类型
Python中对于异常的分类:
异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类StopIteration迭代器没有更多的值GeneratorExit生成器(generator)发生异常来通知退出StandardError所有的内建标准异常的基类ArithmeticError所有数值计算错误的基类FloatingPointError浮点计算错误OverflowError数值运算超出最大限制ZeroDivisionError除(或取模)零 (所有数据类型)AssertionError断言语句失败AttributeError对象没有这个属性EOFError没有内建输入,到达EOF 标记EnvironmentError操作系统错误的基类IOError输入/输出操作失败OSError操作系统错误WindowsError系统调用失败ImportError导入模块/对象失败LookupError无效数据查询的基类IndexError序列中没有此索引(index)KeyError映射中没有这个键MemoryError内存溢出错误(对于Python 解释器不是致命的)NameError未声明/初始化对象 (没有属性)UnboundLocalError访问未初始化的本地变量ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError一般的运行时错误NotImplementedError尚未实现的方法SyntaxErrorPython 语法错误IndentationError缩进错误TabErrorTab 和空格混用SystemError一般的解释器系统错误TypeError对类型无效的操作ValueError传入无效的参数UnicodeErrorUnicode 相关的错误UnicodeDecodeErrorUnicode 解码时的错误UnicodeEncodeErrorUnicode 编码时错误UnicodeTranslateErrorUnicode 转换时错误Warning警告的基类DeprecationWarning关于被弃用的特征的警告FutureWarning关于构造将来语义会有改变的警告OverflowWarning旧的关于自动提升为长整型(long)的警告PendingDeprecationWarning关于特性将会被废弃的警告RuntimeWarning可疑的运行时行为(runtime behavior)的警告SyntaxWarning可疑的语法的警告UserWarning用户代码生成的警告3 异常处理的实例
异常处理的通用结构:
try:#可能出现异常的代码 codeexcept 异常名:codeelse:#未发生异常时,执行这里的语句#else也可以不写 your code #other code of your programcode当我们不清楚异常的具体类型的时候,我们可以获取异常的参数:
try:You do your operations here;......................except ExceptionType, Argument:You can print value of Argument here...try-finally的使用,try-finally 语句无论是否发生异常都将执行最后的代码。
注意:你可以使用except语句或者finally语句,但是两者不能同时使用。else语句也不能与finally语句同时使用
在平常写程序的过程中,容易用到的场景包括文件的读写操作和数据库的相关操作,下面来举几个例子说明如何编写异常处理的代码。
#coding=utf-8# this is an example for file io exception processing# open a file import os#获取当前文件的路径file_path = os.getcwd()print file_pathfile_name = "data.txt"#反斜杠要加转义字符file_name = file_path + '\\' + file_nameprint file_name#以各种权限打开文件'''w 以写方式打开,a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)r+ 以读写模式打开w+ 以读写模式打开 (参见 w )a+ 以读写模式打开 (参见 a )rb 以二进制读模式打开wb 以二进制写模式打开 (参见 w )ab 以二进制追加模式打开 (参见 a )rb+ 以二进制读写模式打开 (参见 r+ )wb+ 以二进制读写模式打开 (参见 w+ )ab+ 以二进制读写模式打开 (参见 a+ )'''#myfile = file(file_name , 'w')#异常处理myfile = file(file_name )#读取文件中的内容one_line_content = myfile.readline() #读取一行的信息print myfile.tell()content = myfile.read() #读取当前位置之后的所有的信息print contentprint "read one line"print myfile.tell()print one_line_contenttry:myfile.read()except Exception,e:print "error happened ", eelse:print "there is no exception"print "go on with the program"print "do something else!"#读取完文件之后要关闭文件myfile.close()try:myfile.read()except IOError: # 根据异常的种类进行捕获操作print "this is a io error"except NameError:print "this is a name error"except ValueError:print "this is a value error"else: #如果try代码中没有发生异常会执行else里边的操作print "other kind of error"print "go on with the progarmme"对应的数据文件:data.txt
name:12341zhaozilong:456zhaoyun:134simayi:33Jack:23Rose:55
参考文章和连接
①Python异常处理 W3C
转载于:https://www.cnblogs.com/codemyzen/p/4228132.html