包含try...except...在3.x版本中与2.x版本中的用法差别。python
一、先说差别:函数
在2.x的python中用法实例:spa
1 try: 2 ...... 3 except Exception,e: 4 raise e
在3.x的python中用法实例:code
1 try: 2 ...... 3 except Exception as e: 4 raise e
好啦,二者差别通过对比一目了然(感受这里说格式更好一点,可是格式与用法的成分都有,算了,就这样吧)。啦啦啦~对象
二、再说和异常相关的:blog
与Python异常相关的关键字
1 关键字 关键字说明
2 raise 抛出/引起异常 3 try/except 捕获异常并处理 4 pass 忽略异常 5 as 定义异常实例(except IOError as e) 6 finally 不管是否出现异常,都执行的代码 7 else 若是try中的语句没有引起异常,则执行else中的语句的语句没有引起异常,则执行else中的语句
三、使用try和except语句来捕获异常io
1 try: 2 block 3 except [exception,[data…]]: 4 block
6 try: 7 block 8 except [exception,[data...]]: 9 block 10 else: 11 block
该种异常处理语法的规则是:class
· 执行try下的语句,若是引起异常,则执行过程会跳到第一个except语句。变量
· 若是第一个except中定义的异常与引起的异常匹配,则执行该except中的语句。搜索
· 若是引起的异常不匹配第一个except,则会搜索第二个except,容许编写的except数量没有限制。
· 若是全部的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
· 若是没有发生异常,则执行else块代码。
一个 try...except 块能够有一条 else 子句,就像 if 语句。若是在 try 块中没有异常引起,而后 else 子句被执行。
四、采用traceback(跟踪)模块查看异常
发生异常时,Python能“记住”引起的异常以及程序的当前状态。Python还维护着traceback(跟踪)对象,其中含有异常发生时与函数调用 堆栈有关的信息。记住,异常可能在一系列嵌套较深的函数调用中引起。程序调用每一个函数时,Python会在“函数调用堆栈”的起始处插入函数名。一旦异常 被引起,Python会搜索一个相应的异常处理程序。若是当前函数中没有异常处理程序,当前函数会终止执行,Python会搜索当前函数的调用函数,并以 此类推,直到发现匹配的异常处理程序,或者Python抵达主程序为止。这一查找合适的异常处理程序的过程就称为“堆栈展转开解”(Stack Unwinding)。解释器一方面维护着与放置堆栈中的函数有关的信息,另外一方面也维护着与已从堆栈中“展转开解”的函数有关的信息。
五、经常使用异常名称:
1 异常名 描述 2 AttributeError 调用不存在的方法引起的异常 3 EOFError 到文件末尾引起的异常 4 ImportError 导入模块出错引起的异常 5 IndexError 列表越界引起的异常 6 IOError I/O操做引起的异常,如打开文件出错等 7 KeyError 使用字典中不存在的关键字引起的异常 8 NameError 使用不存在的变量名引起的异常 9 TabError 语句块缩进不正确引起的异常 10 ValueError 搜索列表中不存在的值引起的异常 11 ZeroDivisionError 除数为零引起的异常