zoukankan      html  css  js  c++  java
  • Python 异常

    1、用户自定义异常

    class Bad(Exception):
        pass
    
    def gotBad():
        raise Bad()
    
    try:
        gotBad()
    except Bad as b:
        print("gotBad")
    else:
        pass # 没发生异常时执行
    finally:
        pass # 无论有没有异常都会执行

      空的except语句捕捉一切异常

    2、raise语句不包括异常名称或额外数据值时,就会重新触发异常。

    3、环境管理协议:with/as语句

      (1)环境管理器必须有__enter__和__exit__方法

      (2)环境管理器的__enter__方法会被调用,如果有as子句,则会将返回值赋给子句中的变量,否则,直接丢弃

      (3)代码块中嵌套的代码会执行。

      (4)如果with代码块引发异常,__exit__(type,value,traceback)方法会被调用。如果此方法返回值为假,就会重新引发异常,否则异常会终止。正常情况下异常应该是被重新引发,这样的话才能传递到with语句之外

      (5)如果with代码块没有引发异常,__exit__方法依然会被调用,所有参数都会以None传递。

    class TraceBack:
        def method(self):
            print("method run")
        def __enter__(self):
            print("enter method")
            return self
        def __exit__(self,exc_type,exc_value,exc_tb):
            if exc_type is None:
                print("no exception")
            else:
                print("exception")
                return False
    
    if __name__ == "__main__":
        with TraceBack() as action:
            action.method()
            print("finished")
  • 相关阅读:
    《SeleniumBasic 3.141.0.0
    《SeleniumBasic 3.141.0.0
    《SeleniumBasic 3.141.0.0
    MQ详解及四大MQ对比
    Locust的使用
    pytest测试框进阶(二)
    pytest测试框进阶(一)
    pytest测试框架简介(二)
    pytest测试框架简介(一)
    弱网测试简介
  • 原文地址:https://www.cnblogs.com/SunQi-Tony/p/9921547.html
Copyright © 2011-2022 走看看