首页 > 其他学习 > python > python的异常类型和异常处理
2017
09-30

python的异常类型和异常处理

python 异常类型:

1、NameError:尝试访问一个未申明的变量

2、ZeroDivisionError:除数为0

3、SyntaxError:语法错误

4、IndexError:索引超出范围

5、KeyError:字典关键字不存在

6、IOError:输入输出错误

7、IndentationError:代码书写的缩进错误

8、AttributeError:访问未知对象属性

9、ValueError:传给函数的参数类型不正确

10、TypeError:类型错误

11、AssertionError:断言错误

12、MemoryError:内存耗尽异常

13、NotImplementedError:方法没实现引起的异常

14、LookupError:键、值不存在引发的异常

15、StandardError 标准异常。除StopIteration, GeneratorExit, KeyboardInterrupt 和SystemExit外,其他异常都是StandarError的子类。

异常处理:

try:

try_suite

except Exception as e:

do_except

else:

do_else

finally:

do_finally

执行顺序:

1、若try语句没有捕获异常,执行完try代码后,执行else代码段,最后执行finally。

2、若try捕获异常,首先执行except处理错误,然后执行finally。

注意点:

1、except语句中Exception代表错误类型名称,直接写Exception代表不指定具体的错误类型,这样可以捕获到全部的错误类型,也可以指定错误类型,这样仅捕获指定的错误类型,可以使用多个except语句来捕获不同类型的错误。

2、else语句只有在try语句没有捕获到错误时才会执行,一般用于调试程序使用,可以省略。

3、finally语句不管try是否捕获错误,都会在最后执行,如果没有except语句,会先执行finally语句,然后在把错误抛给解释器处理,一般用于为异常处理事件提供清理机制,用来关闭打开的资源或释放系统资源,可以省略。

抛出异常:

raise Exception('错误提示信息')语句允许强制抛出一个指定的异常。

Exception必需是一个异常实例或异常类(继承自 Exception 的类)

如果需要抛出一个异常,但不想处理它,raise语句可以重新抛出该异常:

try:

raise NameError('HiThere')

except NameError:

print('An exception flew by!')

raise

自定义异常:

在程序中可以通过创建新的异常类型来命名自定义的异常。异常类通常应该直接或间接的从Exception类派生,例如:

class MyError(Exception):

def __init__(self, value):

self.value = value

def __str__(self):

return repr(self.value)

try:

raise MyError(2*2)

except MyError as e:

print('My exception occurred, value:', e.value)

断言语句:

assert语句用于检测表达式是否为真,如果为假,引发AssertionError错误

assert expression [,args]

expression为用于检测的表达式

args为这个AssertionError错误的描述信息

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。