[python]python进阶编程(5)-异常的处理

说明

无论在python中,还是在其他语言中,一个重要的事情就是使得程序更加健壮,那么就自然少不了异常处理,今天讨论一下python中几种异常处理方式。

try-except处理异常

python中使用try except finally组合来实现异常捕捉,except中的Exception是所有异常的父类,下面是一个异常处理的示例:

 
try:
    int("aaa")  
except IndexError as e:  # 捕捉索引异常的子异常,
    print("IndexError:",e)
except ValueError as e:  # 捕捉value错误的子异常
    print("ValueError:",e)
except Exception as e:  # 如果上面两个异常没有捕获到,那么使用Exception捕获,Exception能够捕获所有的异常
    print("Exception:",e)
else:  # 如果没有异常发生,执行else中的代码块
    print("true")
finally:  # 不管是否发生异常,在最后都会执行finally中的代码,一般用于文件关闭
    print("finally")
执行结果:
ValueError: invalid literal for int() with base 10: 'aaa'
finally

raise抛出异常

Exception是所有异常的父类,我们可以自已定义Exception的子类,实现自定义异常处理,下面就是实现例子:

class OldBoyError(Exception):  # 自定义错误类型
    def __init__(self,message):
        self.message=message
    def __str__(self):  # 打印异常的时候会调用对象里面的__str__方法返回一个字符串
        return self.message
try:
    raise OldBoyError("我错了...")  # raise是主动抛出异常,可以调用自定义的异常抛出异常
except OldBoyError as e:
    print(e)

assert断言

python也有断言,用来判断当前环境中的变量是否符合预期,如果不满足,则会抛出AssertionError,以下是例子:

print(123)
assert 1==2  # 断言,故意抛出异常,做环境监测用,环境监测不通过,报错并结束程序
print("456")
执行结果:
123
AssertionError

你可能感兴趣的:([python]python进阶编程(5)-异常的处理)