Я хочу реализовать хорошую обработку ошибок в своем приложении, я заставил этот файл поймать ошибку.
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)
.