优雅详细的Python异常。
errr的Python项目详细描述
呃
在Python中优雅地创建详细的异常。在
详细的例外情况
>>>importerrr>>>classMyException(errr.DetailedException,list_detailts=True,details=["cause","type"]):...pass...>>>example=MyException("The backend server crashed","backend","crash")>>>raiseexample__main__.MyException:ThebackendservercrashedDetails:˪cause:backend˪type:crash>>>example.details{'cause':'backend','type':'crash'}>>>example.cause'backend'
语义异常
您还可以使用make_tree
快速创建大型异常语义树
函数,使用errr.exception
工厂将异常作为关键字参数列出
方法。make_tree
方法执行这些递归工厂来生成
例外情况。嵌套这些工厂方法将使结果异常继承自
彼此。所有产生的异常都会被平直地注入到给定的模块中
dictionary(通常)这应该是globals()
,但是您可以注入到其他模块中
使用sys.modules["name"].__dict__
。在
异常包装
您可以使用wrap
函数将异常作为一种新类型的异常进行捕获和重新生成:
importerrrclassLibraryError(errr.DetailedException,details=["library"]):passforname,libraryinlibraries.items():try:library.load()exceptExceptionase:errr.wrap(LibraryError,name,prepend="When trying to load %library% it reported:\n")# Traceback# ...# __main__.LibraryError: When trying to load myLibrary it reported:# Module 'missing' not found.
- 项目
标签: