假設下面的代碼片段:何時應該記錄異常?
public function foo()
{
return $this->dependency->bar();
}
如果dependency::bar()
被稱爲拋出異常,但預計不會foo()
來處理它。 foo()
在其文檔塊中是否有@throws
條目?或者這應該是隱含的? phpdoc文檔對此有點模糊。
假設dependency
是基於接口注入的;如果接口文件的方法可以在處拋出指定的異常。
這個異常應該由調用代碼處理還是與情況無關?
語義您已經創建公共職能(每個人都可以使用它),在某些情況下,可以拋出異常一路:)
其他語言(java)必須顯式定義在函數體中引發(而不是處理)哪些異常。如果處理調用堆棧中的異常,看起來有點痛苦,但添加信息不會造成傷害。 (在這個具體的例子中,正如你所說的,foo沒有處理異常,foo不知道調用者是否會處理它,所以根據foo,應該注意) – Gerard
由於'$ this-> dependency - > bar()'是調用者和/或文檔的用戶不能/不應該知道的內部實現細節,記錄異常是使其可捕獲的唯一方法。 – deceze
btw如果您使用PhpStorm - IDE會鼓勵您在@throws項中出現此類異常。 –