python异常处理

python通过使用try…except来处理异常,而通过raise来引发异常。
异常在 Python 中无处不在;实际上在标准 Python 库中的每个模块都使用了它们,并且 Python 自已会在许多不同的情况下引发它们。例如:
· 使用不存在的字典关键字 将引发 KeyError 异常。
· 搜索列表中不存在的值 将引发 ValueError 异常。
· 调用不存在的方法 将引发 AttributeError 异常。
· 引用不存在的变量 将引发 NameError 异常。
· 未强制转换就混用数据类型 将引发 TypeError 异常。

例子:

try: 
   fsock = open("/notthere") 
except IOError: 
   print "The file does not exist, exiting gracefully" 
print "This line will always print"

除了处理实际的错误条件之外,对于异常还有许多其它的用处。在标准 Python 库中一个普通的用法就是试着导入一个模块,然后检查是否它能使用。导入一个并不存在的模块将引发一个 ImportError 异常。可以使用这种方法来定义多级别的功能,依靠在运行时哪个模块是有效的,或支持多种平台 (即平台特定代码被分离到不同的模块中)。
例如:

try:    
   import termios, TERMIOS 
except ImportError: 
   try: 
   import msvcrt
   except ImportError: 
   try: 
   from EasyDialogs import AskPassword 
   except ImportError: 
   getpass = default_getpass 
   else: 
   getpass = AskPassword 
   else: 
   getpass = win_getpass 
 else: 
   getpass = unix_getpass

其实异常就是不正常,就是不和我们想象一样去执行。它是因为程序出现了错误而在正常控制流以外采取的行为。
Python出现异常,就是因为检查了一个错误时,Python解释器无法继续继续执行下去,这时候抛出了异常。
往往这个错误分为语法上和逻辑上。
总结一下:
1、NameError:尝试访问一个未声明的变量任何可访问的变量必须在名称空间列出,访问变量需要由解释器进行搜索,如果请求的名字没有在任何名称空间里找到,那么将会生成一个 NameError异常
2、ZeroDivisionError:除数为零任何数值被零除都会导致一个ZeroDivisionError的异常
3、SyntaxError:Python解释器语法错误 SynaxError异常是唯一不是在运行时候发生的异常,它表示Python代码中有不正确的结构,因此无法正常执行。很明显,这个错误是在编译时候产生的,Python解释器无法将该脚本转化为Python字节代码。
4、IndexError:请求的索引超出了序列范围举例子: >>> aList = [1 ,3] >>> aList[0] 1 >>> aList[1] 3 >>> aList[2] Traceback (most recent call last): File “”, line 1, in IndexError: list index out of range
5、KeyError:请求一个不存在的字典关键字字典中用key访问value,如果使用不存在的key,就是抛出KeyError异常 >>> aList ={‘a’:1,‘b’:2} >>> aList[‘a’] 1 >>> aList[‘c’] Traceback (most recent call last): File “”, line 1, in KeyError: ‘c’
6、IOError:输入/输出错误如果尝试打开一个不存在或者无权限的文件等操作,就会引发操作系统I/O错误。这个错误可以多种
7、AttributeError:尝试访问未知对象属性
8、ValueError:赋值异常例如: >>> int(123.23) 123 >>> int(‘a’) Traceback (most recent call last): File “”, line 1, in ValueError: invalid literal for int() with base

给总结补充一个异常
TypeError:在内建操作或函数应用于错误类型的对象是引发

用一段代码捕捉所有异常

try:
  pass
except Exception, e:
  print e