Обработка ошибок с помощью try и catch в Laravel

Я хочу реализовать хорошую обработку ошибок в своем приложении, я заставил этот файл поймать ошибку.

App\Services\PayUService

try {
  $this->buildXMLHeader; // Should be $this->buildXMLHeader();
} catch (Exception $e) {
        return $e;
}

App\Controller\ProductController

function secTransaction(){
  if ($e) {
    return view('products.error', compact('e'));
  }
}

И это то, что я получаю.

введите описание изображения здесь

Я не знаю, почему Laravel не перенаправляет меня на представление. Правильно ли ошибка?

Ответ 1

Вы находитесь внутри namespace поэтому вы должны использовать \Exception для определения глобального пространства имен:

try {
  $this->buildXMLHeader();
}
catch (\Exception $e) {
    return $e->getMessage();
}

В вашем коде вы использовали catch (Exception $e) поэтому Exceeption выполняется в/как:

App\Services\PayUService\Exception

Поскольку внутри App\Services\PayUService нет класса Exception поэтому он не запускается. В качестве альтернативы, вы можете использовать оператор use в верхней части вашего класса, например use Exception; и тогда вы можете использовать catch (Exception $e).