gpt4 book ai didi

python 类的自定义异常处理程序

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:27 25 4
gpt4 key购买 nike

我想使用 Redis 缓存构建我的应用程序。但在我们的例子中,redis 可能并不总是可用,
所以我希望,redis 运行良好,我们使用它。如果它不起作用,这次只需记录并忽略它。

例如:

try:  conn.sadd('s', *array)except :  ...

因为有很多地方我会运行一些conn.{rediscommand},我不喜欢在每个地方都使用try/except。

所以解决方案可能是:

class softcache(redis.StrictRedis):   def sadd(key, *p):       try:          super(redis.StrictRedis, self).sadd(key, p)       except:          ..

但是由于redis有很多命令,所以我必须将它们一一扭曲。

是否可以为类自定义异常处理程序来处理来自该类的所有异常?

最佳答案

默认情况下沉默所有异常可能是您能做的最糟糕的事情。

无论如何,对于您的问题,您可以编写一个仅重定向到连接对象的通用包装器。

class ReddisWrapper(object):

conn = conn # Here your reddis object

def __getattr__(self, attr):

def wrapper(*args, **kwargs):
# Get the real reddis function
fn = getattr(self.conn, attr)

# Execute the function catching exceptions
try:
return fn(*args, **kwargs)

# Specify here the exceptions you expect
except:
log(...)

return wrapper

然后你会这样调用:

reddis = ReddisWrapper()
reddis.do_something(4)

这尚未经过测试,并且仅适用于方法。对于属性,您应该捕获不可调用的异常并做出正确的 react 。

关于python 类的自定义异常处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21853677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com