exceptionx

English | 中文

exceptionx 是一个灵活且便捷的Python异常处理库,允许你动态创建异常类,并提供多种异常处理机制。

exceptionx 的前身是 gqylpy-exception

pip3 install exceptionx

动态创建异常

使用 exceptionx,你可以在需要时即时创建异常类,而无需提前定义。例如,如果你希望抛出一个名为 NotUnderstandError 的异常,只需导入库并以如下方式调用:

import exceptionx as ex

raise ex.NotUnderstandError(...)

在这里,NotUnderstandError 并不是 exceptionx 预先定义的,而是在你尝试访问 e.NotUnderstandError 时通过魔化方法 __getattr__ 动态创建的。这种灵活性意味着你可以根据需要创建任何名称的异常类。

此外,exceptionx 还确保不会重复创建相同的异常类。所有已创建的异常类都会被存储在 e.__history__ 字典中,以便后续快速访问。

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

from exceptionx import NotUnderstandError

raise NotUnderstandError(...)

强大的异常处理功能

exceptionx 还提供了一系列强大的异常处理工具:

  • TryExcept: 装饰器,捕获被装饰的函数中引发的异常,并将异常信息输出到终端(不是抛出)。这有助于避免程序因未处理的异常而崩溃。
  • Retry: 装饰器,同上,并会尝试重新执行,通过参数控制次数和每次重试之间的间隔时间,在达到最大次数后抛出异常。
  • TryContext: 上下文管理器,使用 with 语句,你可以轻松捕获代码块中引发的异常,并将异常信息输出到终端。

使用 TryExcept 处理函数中引发的异常

from exceptionx import TryExcept

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

默认的处理方案是将异常简要信息输出到终端,不会中断程序执行。当然,也可以输出到日志或做其它处理,通过参数控制。

根据 Python 编程规范,处理异常时应明确指定异常类型。因此,在使用 TryExcept 装饰器时,需要明确传递所处理的异常类型。

使用 Retry 重试函数中引发的异常

from exceptionx import Retry

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

若被装饰的函数中引发了异常,会尝试重新执行被装饰的函数,默认重试 Exception 及其所有子类的异常。像上面这样调用 Retry(sleep=1, count=3) 表示最大执行3次,每次间隔1秒。

Retry 可以配合 TryExcept 使用,将先重试异常,若重试无果,则在最后处理异常:

from exceptionx import TryExcept, Retry

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

使用 TryContext 处理上下文中引发的异常

from exceptionx import TryContext

with TryContext(ValueError):
int('a')

通过 exceptionx,你可以更加灵活和高效地处理Python程序中的异常,提升代码的健壮性和可靠性。

exceptionx:灵活便捷的Python异常处理库,让异常处理更高效!的更多相关文章

  1. [python标准库]XML模块

    1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词. ...

  2. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  3. Python可视化库

    转自小小蒲公英原文用Python可视化库 现如今大数据已人尽皆知,但在这个信息大爆炸的时代里,空有海量数据是无实际使用价值,更不要说帮助管理者进行业务决策.那么数据有什么价值呢?用什么样的手段才能把数 ...

  4. Python标准库、第三方库和外部工具汇总

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  5. Python 标准库、第三方库

    Python 标准库.第三方库 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写 ...

  6. 140种Python标准库、第三方库和外部工具

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  7. 常用python机器学习库总结

    开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...

  8. [Python] 机器学习库资料汇总

    声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...

  9. python常用库

    本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...

  10. [resource]Python机器学习库

    reference: http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块: ...

随机推荐

  1. open代码学习

    ADC 用宏定义c++编译器兼容c程序 #ifdef __cplusplus extern "c" { } 枚举类型传值 typedef enum{ CHANNAL_1 = 1; ...

  2. OpenCV笔记(10) 相机模型与标定

    万圣节快乐! 1. 相机模型 针孔相机模型:过空间某特定点的光线才能通过针孔(针孔光圈),这些光束被投影 到图像平面形成图像. 将图像平面在针孔前方,重新把针孔相机模型整理成另一种等价形式, 实际上, ...

  3. 代码审计——基础(JAVASE)

    JAVASE 目录 JAVASE 基本语法 关键字 变量 作业1 作业完成 第一题:简单的介绍了java语言历史,优势.发展 第二题:特性:面向对象.跨平台.封装.继承.多态.抽象.扩展性.健壮性.垃 ...

  4. runliuv MSDN I TELL YOU

    runliuv MSDN I TELL YOU 老站点:WIN SEVER ,VISUAL STUDIO 早期版本 老站点:https://msdn.itellyou.cn/ 新站点:最近的WIN10 ...

  5. Semantic Kernel入门系列:通过依赖注入管理对象和插件

    前言 本章讲一下在Semantic Kernel中使用DependencyInject(依赖注入),在之前的章节我们都是通过手动创建Kernel对象来完成框架的初始化工作,今天我们用依赖注入的方式来实 ...

  6. 使用spark-sql处理Doris大表关联

    背景 最近项目上有一个需求,需要将两张表(A表和B表)的数据进行关联并回写入其中一张表(A表),两张表都是分区表,但是关联条件不包括分区字段. 分析过程 方案一 最朴素的想法,直接关联执行,全表关联, ...

  7. python logging去掉selenium大量的日志

    问题 二次封装logging模块,设置级别为DEBUG,默认所有级别的日志都可以收集到:在发起ui自动化,打开浏览器输入网址,进行页面操作时,打印了大量的connectionpool.remote_c ...

  8. Lfu缓存在Rust中的实现及源码解析

    一个 lfu(least frequently used/最不经常使用页置换算法 ) 缓存的实现,其核心思想是淘汰一段时间内被访问次数最少的数据项.与LRU(最近最少使用)算法不同,LFU更侧重于数据 ...

  9. .NET 个人博客-首页排版优化-2

    个人博客-首页排版优化-2 原本这篇文章早就要出了的,结果之前买的服务器服务商跑路了,导致博客的数据缺失了部分.我是买了一年的服务器,然后用了3个月,国内跑路云太多了,然后也是花钱重新去别的服务商买了 ...

  10. Linux 内核:设备驱动模型(6)设备资源管理

    Linux 内核:设备驱动模型(6)设备资源管理 背景 不要总是用Linux 2.6的风格来写驱动代码了,也该与时俱进一下. 参考:http://www.wowotech.net/device_mod ...