2017-01-16 172 views
1

抱歉模糊標題。在方法或調用方法中拋出異常

我想知道什麼是最好的在這樣的情況下做的事:

$template = $loader->load('file'); 

if (!$template) { 
    throw new \Exception('my custom exception'); 
} 

它會更好,以保持這個樣子,或者實際上拋出異常的$loader->loader()方法?

我想如果你真正做到遇到是在例如像拋出一個異常,你會始終貫穿其中異常被拋出不管怎麼說方法點擊。所以這個異常沒有真正的理由會在堆棧跟蹤中更高。

有關這方面的想法?當你可以讓方法實際執行異常時,爲什麼你會在堆棧跟蹤中捕捉到更高的異常?

+1

這要看情況而定。例如,如果它是文件未找到異常,則應該在加載方法內引發它。如果涉及外部範圍,則應該將其引入外部示波器等。 –

+0

@ patryk-uszynski確實如此,但是該線條有點模糊。我的意思是什麼時候它會「超越範圍」。因爲在這兩種情況下涉及外部範圍。我想這個問題沒有明確的答案。我仍然發佈,因爲我想這個人的想法。謝謝閱讀! –

回答

-1

我的意見是方法必須遵守合同或死亡。 每次將對象作爲輸入時,都必須檢查它是否爲NULL或有效的對象引用。如果您忘記檢查,NullPointerException可能會在運行時中斷執行。因此,如上所述,您的邏輯會受到多重檢查以及if/then/else forks的污染。

爲什麼空是壞的,你可以閱讀there