2

前の質問にコード例を投稿しましたが、重要な部分は次のとおりです。

Try
    first = _string.IndexOf(_firstchar) + 1
    second = _string.IndexOf(_secondchar)
    If first >= 1 And second >= 0 Then
        retval = _string.Substring(first, second - first)
    End If
Catch ex As Exception
End Try

経験豊富な VB ユーザーの 1 人は、このような Try/Catch の使用法は「悪」であると述べています。

なぜそのような使用法は「悪」であり、エラーを気にしたくないときにプログラムを続行させるのに最低限必要なものは何ですか?

4

2 に答える 2

5

空のCatchブロックは、処理する必要がある例外を隠すことができるため、悪です。ここTry-Catchでは冗長です。2 番目の開始インデックスでオーバーロードを使用する必要があります。

first = _string.IndexOf(_firstchar)      
If first >= 0 Then
    first += 1
    second = _string.IndexOf(_secondchar, first)
    If second >= 0 Then
        retval = _string.Substring(first, second - first)
    End If
End If

AndAlsoの代わりに使用する必要があることに注意してくださいAnd

于 2013-10-12T21:32:05.500 に答える
3

悪い習慣と見なされる理由は、そこでキャッチしている例外が実際にはまったく処理されないため、気付かれないためです。これにより、プログラム フローのさらに下にある他の問題が発生する可能性があり、それらは根本原因に返されたように聞こえます。または、追跡されたとしても、エラー状態をマスクするという以前の決定により、それらの修正が複雑になる可能性があります。

とはいえ、そのような例外を飲み込むことが適切な状況がまれにあるかもしれません。ただし、その決定を下した場合は、その事実を文書化し、その時点でエラーを無視することにした理由を述べてください.

たとえば、ログ機能によってトリガーされた例外を無視することが適切な場合があります。ロガーの目的はエラーをログに記録することであるため、何らかの理由でログ記録が失敗した場合、その例外を処理することはおそらく他にあまりありません..

于 2013-10-12T21:35:01.930 に答える