2017-11-19 1 views
1

루프에서 함수를 호출하려고하는데이 함수는 예외를 throw 할 수 있습니다. 그러나 예외가있을 경우이를 무시하고 다음 반복 항목을 계속 사용하려고합니다. 지금 당장 나는 try와 except로 이것을 해결했다. 자연스럽게 작동하지만 코드에서이 예외를 무시한다는 것을 나타내는 명시적인 방법이 필요합니다. Nim은 그러한 기능을 제공합니까?예외를 자동으로 처리하는 방법은 무엇입니까?

+0

당신이하고있는 일은 자연스러운 일입니다. 어쩌면 catch 메소드에 대한 정보를 기록하여 실패한 인스턴스를 참조 할 수 있습니다. –

답변

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() 
관련 문제