我在循环中调用一个函数,这个函数可以抛出异常。但是当有异常时我想忽略它并继续下一个迭代项。现在我已经通过尝试解决了这个问题,除了,我已经在下面放了一些虚拟声明:它很自然地工作,但我宁愿在代码中有一些明确的方式表明我忽略了这个异常。 Nim是否提供此类功能?
答案 0 :(得分:1)
如果要在代码中明确显示此内容,并且可能自动记录此类错误或调用特殊处理程序,则可以实现具有自定义处理的模板来包装该特定代码。例如:
proc throwPair(value: int) =
if (value mod 2) != 0:
echo "Passed for ", value
else:
raise newException(ArithmeticError, "Bad value")
template ignoreArithmetic(body: stmt): stmt {.immediate.} =
try: body
except ArithmeticError: discard
template ignoreArithmeticAndLog(body: stmt): stmt {.immediate.} =
try: body
except ArithmeticError:
echo "Did ignore arithmetic error!"
proc tester() =
for f in 0..10:
ignoreArithmeticAndLog:
throwPair f
tester()