捕捉,处理,然后重新抛出异常?
-
20-08-2019 - |
题
我今天遇到了一个有趣的两难境地。我有一个处理信息和检查重复值的函数,然后返回下一个数字,是不是重复。所以,我有这样的事情:
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
走错了路,或者是有办法解决?
解决方案
如果你捕获的异常,并恢复它从(与你的IncrementToNonDuplicate ...),那么没有理由抛出一个异常了。捕捉和结束试之间的代码应该只是清理资源,如关闭文件或DataReader的,如果你将重新抛出。
您可以相当返回一个包含非重复值,并要求有关函数错误信息的结构。 另一个方法是先抛出一个自定义异常,将含有“无效号码信息:它应该是...)
其他提示
可以返回一个布尔值指示是否重复被发现,并且将参数变更为通过引用传递在这样你就可以更新该值。
Public Function GetNextNonDuplicateNumber(ByRef NonDupeNumber as Long) as Boolean
不隶属于 StackOverflow