今天我遇到了一个有趣的困境。我有一个处理信息并检查重复值的函数,然后返回下一个不重复的数字。所以,我有这样的事情:抓住,处理,然后重新生成异常?
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
值。我是在想一个错误的方式,还是有办法解决这个问题?
这实际上是一个更佳的措施,并模仿`Int32.TryParse`等。(7年后,我知道了,不过,这应该是OP的选择路径)。 – Abel 2016-12-18 03:42:59