python异常
python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的 回溯(Traceback, 一种错误信息)终止执行:
为了引发异常,可以使用一个类(Exception的子类)或者实例参数数调用raise 语句.系统自带的内建异常类:
常用的内建异常类:
异常的抛出机制:
1、如果在运行时发生异常,解释器会查找相应的处理语句(称为handler).
2、要是在当前函数里没有找到的话,它会将异常传递给上层的调用函数,看看那里能不能处理。
3、如果在最外层(全局“main”)还是没有找到的话,解释器就会退出,同时打印出traceback以便让用户找到错误产生的原因。
捕捉异常
我们可以使用 try/except 来实现异常的捕捉处理。
try:
正常的操作
.............................
except ExceptionType,Argument:
出现错误时处理
实例:
-
#!/usr/bin/env python
-
# -*- coding:utf-8 -*-
-
# Author :Alvin.xie
-
# @Time :2017-11-08 17:14
-
# @file :error2.py
-
-
-
# 定义函数
-
def temp_convert(var):
-
try:
-
return int(var)
-
except ValueError, Argument:
-
print "传入的参数不是数字\n", Argument
-
-
# 调用函数
-
temp_convert('acb');
我们可以使用raise语句自己触发异常
raise语法格式如下:
raise [Exception [,args [, traceback]]]
实例:
-
#!/usr/bin/env python
-
# -*- coding:utf-8 -*-
-
# Author :Alvin.xie
-
# @Time :2017-11-08 11:43
-
# @file :error.py
-
-
-
try:
-
10/0
-
except Exception as e:
-
print 'Hello'
-
raise e
-
-
else:
-
print 'ok'
-
finally:
-
print 'end'
-
执行结果:
Hello
end
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/s14/day15/error.py", line 12, in
raise e
ZeroDivisionError: integer division or modulo by zero
raise 用于抛出(或者说打印出)异常信息,类似于 print 的用法,异常被抛出后程序便停止运行,但是finally 语句会继续执行
所以,打印出"end"
阅读(1450) | 评论(0) | 转发(0) |