今日、私は面白いジレンマに遭遇しました。私は、情報を処理し重複する値をチェックし、重複していない次の番号を返す関数を持っています。だから、私はこのようなものを持っている:キャッチ、ハンドル、例外の再発行?
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
について間違った方法を考えているのですか、それともこの問題を回避する手段がありますか?
これは実際には非常に健全なアプローチであり、かつ模倣 'Int32.TryParse'など。(7年後、私は知っているが、それでも、これはOPのあるべき選択の経路)。 – Abel