2014-03-31 3 views
0

다음식이 있습니다.람다에서 'System.DivideByZeroException'처리

MyResult = userRecords.Exists(
        r => ((r.userDataOne + r.userDataTwo)/r.userLimit) > 0.6m); 

문제는 userLimit은 0

입니다 현재 내가이 처리에 본 적이있는 유일한 것은이 시도/캐치 또는 문 경우 때 가끔 내가 'System.DivideByZeroException'를 얻을 것입니다. 나는 람다 문과 함께 작동하고 0을 처리 할 수있는 솔루션을 찾고자했습니다. 여러 개의 'if'문을 사용하여 붙어 있습니까? 또는 이러한 유형의 예외를보다 효과적으로 처리하는 방법이 있습니까?

+0

왜 것 userDataOne/두 제로 던져 그 예외 인? r.userLimit으로 나누고 있습니다. 마치 if 문이나 삼항 연산자가 유일한 해결책이 될 것 같아요. 예제를 게시 할 수 있지만 덮어 씌우고있는 것처럼 들립니다. :) – BradleyDotNET

+3

'r으로하면 '0으로 나누기'예외 만받습니다. 'r.userDataOne'과'r.userDataTwo'에 관계없이 userLimit'은 0입니다. – Cameron

+0

LordTakkera 좋은 지적으로, 나는 예외를 던지고있는 것에 혼란스러워한다고 생각합니다. @ 카메론 당신은 완전히 맞습니다, 그것은 userLimit입니다. – devfunkd

답변

4

문제가 userDataOne 또는 userDataTwo이 아닙니다. 문제는 userLimit입니다.

당신은이 같은 레코드를 피하는 시도 할 수 있습니다 :

userRecords.Where(r => r.userLimit != 0).Exists(...) 

또는 같은

는 :

userRecords.Exists(r => r.userLimit != 0 && ((r.userDataOne + r.userDataTwo)/r.userLimit) > 0.6m); 
관련 문제