zoukankan      html  css  js  c++  java
  • [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
    
  • 相关阅读:
    NYoj-119-士兵杀敌(3)-RMQ算法
    springMVC3学习(九)--redirect和forward跳转
    STL
    在 Ubuntu 12.04 上通过源码安装 Open vSwitch (OVS)
    SSO 基于CAS实现单点登录 实例解析(二)
    Linux
    linux的子进程调用exec( )系列函数
    以Settings.APPLICATION_DEVELOPMENT_SETTINGS打开开发人员面板出错总结
    python学习记录
    CentOS6.X下安装配置独立SVN服务器Subversion server
  • 原文地址:https://www.cnblogs.com/wildkid1024/p/13223931.html
Copyright © 2011-2022 走看看