常见python 异常

常见python 异常:

AttributeError  试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x

IOError  输入/输出异常;基本上是无法打开文件

ImportError  无法引入模块或包;基本上是路径问题或名称错误

IndentationError  语法错误(的子类) ;代码没有正确对齐

IndexError  下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

KeyError  试图访问字典里不存在的键

KeyboardInterrupt  Ctrl+C被按下

NameError  使用一个还未被赋予对象的变量

SyntaxErrorPython代码非法,代码不能编译(个人认为这是语法错误,写错了)

TypeError  传入对象类型与要求的不符合

UnboundLocalError  试图访问一个还未被设置的局部变量,基本上是由于另有一个同

名的全局变量,导致你以为正在访问它

ValueError  传入一个调用者不期望的值,即使值的类型是正确的

 

 

 

 

手动触发异常:

Raise IndexError

 

vimmanual_error.py

#!/usr/bin/envpython

try:

  name=raw_input('Name:').strip()

  age = raw_input('Age:').strip()

  if len(name) == 0:

    raise KeyError

exceptKeyError,err:

  print 'No valid key',err

 

 

制作自己的异常:

 

classMyException(Exception):              #继承对象的异常系统函数

pass

try:

#some code here

raiseMyException

exceptMyException:

print"MyException encoutered"

 

 

 

 

Try….finally

 

Finally----无论try块是否抛出异常(有错误)永远执行的代码。通常用来执行关闭文件断开服务器连接的功能等等。

classMyException(Exception):pass

try:

#some code here

raiseMyException

exceptMyException:

print"MyException encoutered"

finally:

print"Arrive finally”

 

可以在try块里加入else块,代码块将在没有异常被抛出的时候执行:

try:

print"normal code here"

exceptMyException:

print"MyException encoutered"

else:

print "Noexception”

 

 

Try…except..else

如果没有异常则执行else后面的语句:

[root@node110error]# cat try_except_else.py

#!/usr/bin/envpython

try:

  name = raw_input('Name:').strip()

  if len(name) == 0:

    raise KeyError

exceptKeyError,err:

  print 'No valid key',err

else:

  print 'No err found...'

 

不管是什么错误都会报错(万能错误),一般不用

 

 

Try….finally

raise异常、同时添加数据

raise异常的同时,我们可以添加一些额外的数据,就像下面的例子一样:

classMyException(Exception):

pass

try:

raiseMyException,", and some additional data"

exceptMyException,data:

print"MyException encoutered"

print data

---------output-------?

 

 

 

 

 

 

分割线
打赏
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS