• [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
    
  • 相关阅读:
    测试平台系列(56) JSON深层次对比方案
    测试平台系列(57) 美化代码编辑器
    测试平台系列(54) 数据库表接口适配前端页面(下)
    测试平台系列(55) 引入AceEditor(代码编辑器)
    测试平台系列(52) 改造异步数据库连接方案
    测试平台系列(53) 数据库表接口适配前端页面(上)
    二叉树
    OCP 063中文考试题库(cuug内部资料)第34题
    OCP 063中文考试题库(cuug内部资料)第33题
    OCP 063中文考试题库(cuug内部资料)第32题
  • 原文地址:https://www.cnblogs.com/wildkid1024/p/13223931.html
Copyright © 2020-2023  润新知