异常处理

上一篇 / 下一篇  2017-06-01 16:43:57 / 个人分类:Python

为什么使用异常:
x = '13'
# for i in range(2,x):
#     print(i)
try:
    for i in range(2,x):
        print(i)
except Exception as msg:
    print(msg)
    
print('not finish yet')

range接受的参数是整数,否则发生异常。如果不用try捕捉异常,那么最后一句print就不能执行到。


异常处理的方式:
try...except
try...except...final
触发异常:raise 异常类名
with/as 环境管理器
自定义异常

新的所有异常的基类BaseException
所有异常的基类Exception,(继承于BaseException)

所以在不能记住具体的异常类,或者有多个异常要处理时,可以用Exception或BaseException
try:
    print(aa)
except Exception:
    print('exception here')
输出:
exception here

想要python直接告诉我们异常的原因,就在Exception后面定义变量接收异常信息
try:
    print(aa)
except Exception as msg:
    print(msg)

输出:
name 'aa' is not defined


可以使用raise触发异常,
class MyTest(object):
    def __init__(self,x):
        self.x = x
    
    @property
    def x(self):
        return self.x
    
    @x.setter
    def x(self,x):
        if x < 0:
            raise ValueError('cannot be smaller than 0')
        if x > 100:
            raise ValueError('cannot be greater than 100')
        
a = MyTest(2000)
当x的值不符合条件时,自动触发异常

总结:关于异常有三种
1.捕捉异常,以便代码出现异常时自动终止,try...except方法
2.触发异常,以便检测某种错误,raise 异常
3.使用环境管理器,无论是否有异常都可以自动进行清理工作,如自动关闭文件,释放锁,断开数据库连接,with/as环境管理器。


TAG:

 

评分:0

我来说两句

Open Toolbar