今日、私は興味深いジレンマに遭遇しました。情報を処理し、重複する値をチェックして、重複していない次の数値を返す関数があります。だから、私はこのようなものを持っています:
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
は間違った方法を考えていますか、それともこれを回避する方法がありますか?