【发布时间】:2021-09-22 02:43:31
【问题描述】:
我有一个主函数,它接受一个列表参数并处理列表中的每个元素。每当一个元素引发异常时,我都没有必要停止程序。问题是输入列表通过不同的函数传递,处理所有这些函数的异常很痛苦。
当列表中的当前元素引发异常时,有什么方法可以继续处理下一个元素?
假设 func3 在 list_[0] 处引发异常,然后 main 将继续从 func1 处理 list_[1],然后是 func2,... –
一些伪代码:
def main(list_) -> None:
func1(list_)
func2(list_)
func3(list_)
预期行为:
def main(list_) -> None:
try:
func1(list_)
func2(list_)
func3(list_)
except:
continue with the next element
print(Element i raise Exception..., Skipping i...)
【问题讨论】:
-
您的编辑使问题变得不那么清晰,而不是更清晰。您是否打算致电
func1(list_[0])、func2(list_[1])等?或者调用整个列表中的每个函数?或者单独调用列表中每个元素的每个函数?也许您可以提供一些示例func1...3定义和list_的值,并解释您期望发生的情况。 -
@Samwise 我应该调用 func(list_) 但 func 逐个元素地处理 list_ 元素。我希望只要有任何元素在 func 内引发异常,那么我的程序将跳过该元素并返回主函数并继续下一个元素。
-
这需要发生在
func的定义中,而不是在它的调用者中。调用者看不到func对列表做了什么,更不用说告诉它“不,回去从你离开的地方继续”。这突出了您需要发布func的示例定义,而不仅仅是main。try/except需要发生在func正在执行的循环中。 -
可以让
main将异常处理程序注入func,这可能会完成您正在寻找的工作——但我们需要实际的可运行代码!