2

だから、私はプログラミングに不慣れで、私の質問は次のとおりです。

カスタム機能を備えたプログラミング言語のデフォルトメソッドのエラーメッセージの動作をオーバーライドするために例外ハンドラーを使用することは悪い習慣と見なされますか?つまり、次のようなもの(Python)を使用することは倫理的に正しいですか?

def index(p, val):
    try:
        return p.index(val)
    except ValueError:
        return -1

多分私は十分に正確ではありませんでした。私が意味したのは、スローされた例外(まあ、どこにも当てはまらないと思います)を正当で有効なケースステートメントと見なすのは通常の方法ですか、それとも推奨されない方法ですか?

同様に、上記の例のアイデアは、カスタムエラーメッセージを作成することではなく、ユーザーや他のプログラムモジュールに問題が発生していることを警告せずに発生する可能性のあるエラーを抑制することです。

4

4 に答える 4

3

ユーザーが組み込み関数を使用していないことを明確にする関数名を使用する限り、このようなことを行うことは問題ないと思います。ユーザーがビルトインを使用していると思い、突然index-1が返される場合は、発生する可能性のあるバグを想像してください...彼らは次のことを行います。

a[index(a,'foo')]

そして突然、彼らはリストの最後の要素を取得します(そうではありませんfoo)。


ただし、非常に重要なルールとして、で何をすべきかを知っている例外のみを処理してください。上記の例はこれをうまく行っています。称賛。

于 2012-10-19T13:39:45.167 に答える
1

これは完全に問題ありませんが、チェックしている状態の種類によって異なります。これらの状態をチェックするのは開発者の責任です。プログラムにとって致命的な例外もあれば、そうでない例外もあります。すべてはメソッドのコンテキストに依存します。

于 2012-10-19T13:39:24.320 に答える
1

ValueErrorPythonのような言語では、一般的な例外よりも、関数にカスタムエラーメッセージを表示する方がはるかに優れていると思います。ただし、独自のアプリケーションの場合、メソッド内にこの機能を含めると、コードの読み取りと保守が容易になります。

他の言語についても同じことが言えますが、例外を非表示にしている間は、動作が異なる別の関数を模倣しないようにする必要があります。

于 2012-10-19T13:40:09.380 に答える
1

エラーが発生する場所とエラーの原因が正確にわかっている場合は、そのような処理に問題はありません。何か間違ったことが起こった場合に適切な行動を取っているだけなので、起こり得ることはわかっています。

したがって、For E.g:-2つの数値を除算しようとしていてif the denominator is 0、それを知っている場合は除算できません。その場合は、カスタムメッセージを使用して問題を示すことができます。

于 2012-10-19T13:40:44.527 に答える