我无法控制不必要地引发某个异常的python库。
有没有办法用“安慰剂”Exception子类来处理它?即。
class MyException(Exception):
def __init__(self, value):
# literally do nothing. return to program flow
pass
答案 0 :(得分:5)
引发某些异常
您有某些异常,您应该通过在try-except
块的except子句中指定异常类来处理异常。
安慰剂方法(即except Exception...
)只会沉默其他异常,因为异常通常来自Exception
或根本不起作用(与您的新异常类)因为引发的异常显然不是从新的异常类派生的。
请记住:
除非明确地沉默,否则错误不应该默默传递
所以我不明白为什么你想要在没有try-except
的情况下撤销一个引发的异常。没有提出例外情况。
如果您希望每次调用此库中的函数时都避免使用try-except
,那么您可以编写一个包装函数,用try-except
包装调用,然后使用今后的新功能。
from somelib import func
from somelib import SomeException
def wrapper_func(*args, **kwargs):
try:
func(*args, **kwargs)
except SomeException:
pass
答案 1 :(得分:0)
虽然另一个答案是正确的,但如果你正在处理一些奇怪/错误的模块,你可以试试fuckitpy
!
请注意,让异常无声地传递通常是一个非常糟糕的主意。
无论如何,使用fuckitpy
的基本方法是(引用文档):
import fuckit
#import some_shitty_module
fuckit('some_shitty_module')
some_shitty_module.some_function()
同样来自文档:
仍有错误?连锁fuckit电话。这个模块就像暴力:如果它不起作用,你只需要更多它。
import fuckit fuckit(fuckit('some_shitty_module')) # This is definitely going to run now. some_shitty_module.some_function()
fuckitpy (GitHub)
:https://github.com/ajalt/fuckitpy