2016-01-14 7 views
2

Я выбрасывал исключения, когда я хотел остановить действие во время обработки бэкэнд. Я забыл, что могу использовать метод Laravel abort(). Есть ли причина использовать abort() для выброса исключения? Это в значительной степени делает то же самое?Laravel 5.1 - Разница между бросанием Исключения и прерывание()

Я также спрашиваю, потому что я заметил, что, когда я заканчиваю свои журналы, abort() не показывает трассировку стека, но бросает Exception. В этих случаях мне не нужна трассировка стека, потому что я знаю, почему она терпит неудачу. Я также не хочу, чтобы журналы стали огромными из этих известных сбоев.

ответ

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