今天我遇到了一個有趣的困境。我有一個處理信息並檢查重複值的函數,然後返回下一個不重複的數字。所以,我有這樣的事情:抓住,處理,然後重新生成異常?
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