2015-09-28 4 views
9

例外$eをスローする関数aがあるとします。したがって、phpdocによれば、aの定義には、注釈@throwsが必要です。伝播された例外の例外注釈

私は別の関数ba

function b() { 
    a(); 
} 

での呼び出しを持っている場合、それは良い練習/悪い習慣/ bは例外のようなものを投げることができたことを示すbの定義を超える@throw注釈を持っていることが間違っている/正しいですか?なぜb()方法で例外をキャッチしない、正当な理由がある:

+0

PHPDocはJavaDocをベースにしています。Javaでは、ここでb()メソッドに '@ throws'宣言を含めることができます。しかし、もっと重要なのは、b()が特定の種類の例外をスローする可能性があることをあなたと他のプログラマーにとって実用的に考えているかどうかということです。特にtry/catchブロックb()を呼び出すとき。 –

答えて

3

@throws注釈は、まず例外
を投げることができる、あなたが質問をする必要がある)機能(あれば開発者のために示すことですそれは?
はい?あなたが@throws注釈を追加する必要がありので、それは機能()b()を使用すると、安全ではありません、彼らは キャッチしますか
も例外
を伝播する場合PHP」のdoesnのため、彼らは、決定することを示している、または他の開発者になります@throws注釈が実際のところ必須/必須練習

+0

Theryが「安全でない」ため、目を引く例外は、例外に対する悪い姿勢です。例外の利点は、成功事例にきれいなコードパスを提供でき、スタックを伝播させることが重要な部分であることです。あなたはそれを明示的に否定していませんが、あなたの答えは、この(IMHOに欠陥のある)態度を示唆しています。 –

1

になった別の関数によってスローされた例外をキャッチするためにトンの力あなたは、b()は例外をスローします。それが直接的または間接的に起こるかどうかは、発信者とは無関係です。さて、注釈は、異なる派生クラスで変更される可能性のある内部実装の詳細を文書化することは想定されていません。むしろ、注釈には発信者の可視動作が記載されているため、有効例外も注釈の一部である必要があります。

関連する問題