gpt4 book ai didi

python - 如果我想冒泡一个通用异常,我在 python 中做什么?

转载 作者:行者123 更新时间:2023-12-03 20:21:34 27 4
gpt4 key购买 nike

所以假设我有这个 python 代码:

def loopForEachFileInDirectory(self, conn):
for filename in os.listdir(uploadedFilesDirectory):
try:
self.insertNewEntryForStagingFile(conn, filename)
self.copyFilesToStagingDirectory(filename)
except: ???

def copyFilesToStagingDirectory(self, filename):
logging.info("copying %s to youtube_ready",filename)
try:
shutil.copy(uploadedFilesDirectory+filename, stagingDirectory)
logging.info("move successful")
except shutil.Error,e:
logging.warn("move failed for reasons \n\t%d:%s", e.args[0],e.args[1])
raise ???

现在,“loopForEachFileInDirectory”方法将包含更多方法 - 我正在这里进行一些干净的编码(为 Robert Martin 加油)。我想要的是从子方法中冒出任何异常,如果主循环中发生任何事情,请保释该循环并继续。

问题是,冒泡通用异常的规则是什么?我只是自己筹集吗?如果是这样,我通常如何抛出异常,以及如何捕获和记录通用异常的详细信息?

最佳答案

what is the rule for bubbling up a generic exception? Do i just raise on its own?



是的。简短的回答是只使用 raise .

And if so, how do i generically throw an exception...



其他提交者发布的上述答案是正确的,但它没有提供太多上下文。
Exception是基类异常。 except Exception适用于所有类型的 Exception因为所有 Python 异常都继承自此类。
except语句可以指定一个指向异常对象的参数。

我不认为在这种情况下严格指定它是必要的。事实上,用默认值冒泡一个异常可能就足够了:
except:
raise

无需指定异常类型或变量 e引用特定的异常对象。

..and how do i catch and log the details of a generic exception?


logging.exception是个好办法。像这样尝试:
try:
<something that raises an error>
except Exception, e:
logging.exception(e)

关于python - 如果我想冒泡一个通用异常,我在 python 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014991/

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