有没有一种方法可以在python中“解开”异常?

2024-10-02 00:33:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法控制不必要地引发某个异常的python库。在

有没有办法用“安慰剂”异常子类来处理它?i、 e

class MyException(Exception):
    def __init__(self, value):
        # literally do nothing. return to program flow
        pass

Tags: toselfreturninitvaluedefexceptionprogram
2条回答

虽然另一个答案是正确的,但是如果您正在处理一些奇怪的/有缺陷的模块,您可以尝试一下fuckitpy!在

请注意,让异常安静地通过通常是一个非常糟糕的主意。在

总之,使用fuckitpy的基本方法是(引用文档):

import fuckit
#import some_shitty_module
fuckit('some_shitty_module')
some_shitty_module.some_function()

同样来自文档:

Still getting errors? Chain fuckit calls. This module is like violence: if it doesn't work, you just need more of it.

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

raises a certain exception

您有一个特定的异常,您应该通过在try-except块的except子句中指定异常类来处理该异常。在

安慰剂方法(即except Exception...)只会使其他异常静音,因为异常通常来自Exception,或者根本不起作用(使用新的异常类),因为引发的异常显然不是从新的异常类派生的。在


请记住:

Errors should never pass silently unless explicitly silenced

所以我不明白为什么要在不使用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

相关问题 更多 >

    热门问题