如何静默处理异常?

How to silently handle an exception?

我在循环中调用一个函数,这个函数可能会抛出异常。但是当出现异常时我想忽略它并继续下一个迭代项目。现在我已经通过 try and except 解决了这个问题,我在 except: 下放置了一些虚拟语句。它自然有效,但我宁愿有一些明确的方式在代码中指示我忽略了这个异常。 Nim 是否提供这样的功能?

如果您想在代码中明确说明这一点,并可能自动记录此类错误或调用特殊处理程序,您可以实现一个带有自定义处理的模板来包装该特定代码。示例:

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()