Сегодня я столкнулся с интересной дилеммой. У меня есть функция, которая обрабатывает информацию и проверяет дубликаты значений, а затем возвращает следующий номер, который не является дубликатом. Итак, у меня есть что-то вроде этого:
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, который обрабатывает дубликат, увеличивая его до тех пор, пока у меня больше не будет дубликата, например:
Catch ex as DuplicateException
NonDuplicate = IncrementToNonDuplicateValue(NumberToCheck)
Throw ex
Return NonDuplicate
End Function
Как видите, я хочу обработать исключение специально, но я также хочу выбросить его, когда я закончу, потому что я хочу предупредить другой код вне функции.
Проблема в том, что просто выбрасывая его из функции со значением null
. Я думаю о try/catch
неправильном пути, или есть способ обойти это?