response()->json(['message' => 'not found'], 404);
Не генерирует исключение, и обработчик исключений не будет обрабатывать его, он просто вернет код состояния 404
с вашим ответом.
abort(404, 'not found');
Выдает исключение NotFoundHttpException()
и будет обрабатываться обработчиком исключений, расположенным по адресу: app/Exceptions/Handler.php
См. Функцию abort()
ниже:
public function abort($code, $message = '', array $headers = [])
{
if ($code == 404) {
throw new NotFoundHttpException($message);
}
throw new HttpException($code, $message, null, $headers);
}
Как вы можете видеть выше, функция abort()
всегда выдает исключение. Вы просто не увидите подробности исключения, если APP_DEBUG
равен true
, но оно будет зарегистрировано в вашей папке logs
.