2016-01-14 42 views
2

當我想在後端處理期間中止某個操作時,我一直在拋出異常。我忘記了我可以使用Laravel abort()方法。是否有任何理由使用abort()拋出異常?它幾乎做同樣的事情?我也問,因爲我注意到,雖然我拖尾我的日誌,abort()不顯示堆棧跟蹤,但拋出異常。在這些情況下,我不需要堆棧跟蹤,因爲我知道它爲什麼會失敗。我也不希望日誌因這些已知的故障而變得很大。Laravel 5.1 - 拋出異常和中止之間的區別()

回答

4

讓我們來看看代碼:

/** 
* Throw an HttpException with the given data. 
* 
* @param int  $code 
* @param string $message 
* @param array $headers 
* @return void 
* 
* @throws \Symfony\Component\HttpKernel\Exception\HttpException 
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException 
*/ 
public function abort($code, $message = '', array $headers = array()) 
{ 
    if ($code == 404) 
    { 
     throw new NotFoundHttpException($message); 
    } 

    throw new HttpException($code, $message, null, $headers); 
} 

所以看來abort方法僅僅是其拋出一個NotFoundHttpException如果代碼404通過,否則它拋出一個HttpException幫手。

我不知道爲什麼扔Exception會導致日誌記錄,而使用abort()不會。你可能想檢查你的異常處理程序,看看是否有不同類型的異常被捕獲和處理。

您不應該擔心日誌文件的大小。現在的存儲空間非常便宜,文本只佔用很少的空間。您從日誌中獲得的知識遠遠超過其物理成本。

+0

很酷,感謝您的輸入! – kenshin9