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

Posted wildkid1024

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[python]python进阶编程-异常的处理相关的知识,希望对你有一定的参考价值。

说明

无论在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进阶编程-异常的处理的主要内容,如果未能解决你的问题,请参考以下文章

Python学习-08-面向对象编程进阶和异常处理

Python进阶08 异常处理

Python进阶08 异常处理

python进阶之异常处理

Python基础-第七天-面向对象编程进阶和Socket编程简介

Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理