Skip to main content

未提供项目描述

项目描述

标识 版本 Python 版本 执照 下载

gqylpy 异常

raise语句的同时创建异常类,不需要执行预先定义类,方便的例子,你想抛出一个名为的,然后直接导入NotUnderstandError异常即可。import gqylpy_exception as geraise ge.NotUnderstandError

gqylpy-exception还提供了两个处理异常的装饰器:

  • TryExcept: 截获被装饰的函数中触发的异常。将异常信息输出到终端,而不是抛出。
  • Retry: 同上,并会尝试重新执行,通过参数多次控制异常,在达到后多次抛出异常。

pip3 install gqylpy_exception

使用gqylpy_exception创建异常类

import gqylpy_exception as ge

raise ge.AnError(...)

gqylpy_exception可以创建异常类。AnError不是gqylpy_exception内置的,它是在你的代码执行到ge. 创建时的,魔化方法__getattr__的特性。你还可以使用魔法方法__getitem__获得它:

e: ge.GqylpyError = ge['AnError'](...)

是的,使用gqylpy_exception创建的异常类都继承GqylpyErrorGqylpyError继承包含的Exception

还有一种用法,导入即创建:

from gqylpy_exception import AnError

raise AnError(...)

另外,gqylpy_exception不会创建重复的异常类,创建过的异常类将重新存入ge.__history__字典,当你创建时从这个字典中取值。

使用装饰器TryExcept处理函数中的异常

from gqylpy_exception import TryExcept

@TryExcept(ValueError)
def func():
    int('a')

当然,也可以通过处理流程将异常文件输出到终端。当然,也可以通过控制:

def TryExcept(
        etype:          Union[type, tuple],
        *,
        ignore:         bool               = False,
        output_raw_exc: bool               = False,
        logger:         logging.Logger     = None,
        ereturn:        Any                = None,
        ecallback:      Callable           = None,
        eexit:          bool               = False
):
    ...

etype
异常使用元参数要处理多个。

参数ingore
设置True将静默处理异常,没有任何输出。

参数output_raw_exc
设置True将输出完整的异常信息,注意其优先级成绩ignore

参数logger
接收日志记录器对象,TryExcept希望使用日志记录器输出异常信息,它使用日志记录器的error日志记录器
对象sys.stderr

如果被装饰的函数中使用参数ereturn 出现
异常,将返回此None默认值。
None

ecallback
接收一个接收对象的函数,如果被装饰的函数中调用了参数参数
,将调用 这个参数。还可以调用对象的多个:可调用对象的所有对象,被装饰的对象的所有函数。

参数eexit
设置将在出现True异常后SystemExit(4),如果有ecallback先执行ecallback

使用装饰Retry器重拨号试中的异常

from gqylpy_exception import Retry

@Retry(count=3, cycle=1)
def func():
    int('a')

被装饰的功能中出现了类似的装饰异常,会尝试重新执行的功能,默认Exception试试及其子类的所有Retry(count=3, cycle=1)。 :

def Retry(
        etype:          Union[type, tuple] = Exception,
        *,
        count:          int                = inf,
        cycle:          Union[int, float]  = 0,
        ignore:         bool               = False,
        output_raw_exc: bool               = False,
        logger:         logging.Logger     = None,
):
    ...

Retry继承TryExcept,你可以在其中TryExcept找到参数说明,但注意Retry调用日志记录器的warning方法。

结合TryExcept使用,既能重试异常又能处理异常:

from gqylpy_exception import TryExcept, Retry

@TryExcept(ValueError)
@Retry(count=3, cycle=1)
def func():
    int('a')

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

gqylpy_exception-1.1.2.tar.gz (12.8 kB 查看哈希

已上传 source

内置分布

gqylpy_exception-1.1.2-py3-none-any.whl (12.1 kB 查看哈希

已上传 py3