次のスニペットと仮定します。dependency::bar()
場合例外はいつ文書化する必要がありますか?
public function foo()
{
return $this->dependency->bar();
}
は、例外をスローすることが知られているが、foo()
はそれを処理することが期待されていません。 foo()
には@throws
のエントリがありますか?それとも暗黙のはずですか?これについては、phpdocのドキュメントはやや曖昧です。
dependency
がインターフェイスに基づいて噴射されると仮定します。インターフェイスは、メソッドが指定された例外をスローすることができることを文書化する必要があります。例外は、呼び出し元のコードで処理されなければならないか、その状況とは無関係である場合
それが重要ですか?
セマンティクスのすべての方法:)
他の言語(java)では、関数の本体でスローされる(および処理されない)例外を明示的に定義することが必須です。コールスタックの例外を遠くに処理すると、少しでも苦痛に思えるかもしれませんが、情報を追加することで傷つけることはありません。 (この特定のケースでは、あなたが言ったように、fooは例外を処理しておらず、fooは呼び出し元がそれを扱うかどうかわからないので、fooに注意してください) – Gerard
'$ this-> dependency - > bar() 'は、ドキュメントの呼び出し側および/またはパーサーが知らない/内部的な実装の詳細です。例外を文書化することがキャッチ可能にする唯一の方法です。 PhpStormを使用する場合、 – deceze
btw - IDEは@throwsエントリにこのような例外を設けることを推奨します。 –