문제

나는 오늘 흥미로운 딜레마를 만났다. 정보를 처리하고 중복 값을 확인한 다음 중복되지 않은 다음 번호를 반환하는 기능이 있습니다. 그래서 나는 다음과 같은 것이 있습니다.

Public Function GetNextNonDuplicateNumber(NumberToCheck as Long) as Long

      //the non-duplicate the function will return
      Dim NonDuplicate as Long

      If CheckForDuplicate(NumberToCheck) = True Then
          Throw New DuplicateException()
      Else
          NonDuplicate = NumberToCheck
      End If

End Function

그런 다음 함수의 하단에는 더 이상 중복이 없을 때까지 증가하여 중복을 처리하는 캐치 블록이 있습니다.

Catch ex as DuplicateException
   NonDuplicate = IncrementToNonDuplicateValue(NumberToCheck)
   Throw ex
   Return NonDuplicate
End Function

보시다시피, 예외를 구체적으로 처리하고 싶지만 기능 외부의 다른 코드를 경고하고 싶기 때문에 완료되면 던지고 싶습니다.

문제는 단순히 그것을 던지는 것이 기능에서 나온다는 것입니다. null 값. 나는 생각하고 있습니까? try/catch 잘못된 방법, 아니면 이것에 대한 방법이 있습니까?

도움이 되었습니까?

해결책

예외를 발견하고 그로부터 회복된다면 (증분 토론 복제본으로 ...) 더 이상 예외를 던질 이유가 없습니다. 캐치와 엔드 시도 사이의 코드는 파일을 닫는 것과 같은 리소스를 청소해야합니다.

오히려 기능이없는 오류에 대한 필수 정보와 필요한 정보가 포함 된 구조를 반환 할 수 있습니다. 다른 방법은 "유효하지 않은 번호 : It해야 ...)와 같은 정보가 포함 된 사용자 정의 예외를 던지는 것입니다.

다른 팁

중복이 발견되는지 표시하는 부울을 반환하고 참조로 전달할 매개 변수를 변경하여 값을 업데이트 할 수 있습니다.

Public Function GetNextNonDuplicateNumber(ByRef NonDupeNumber as Long) as Boolean
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top