我正在尝试捕获错误,但是它不起作用,我总是看到Symfony Exception页面,您在代码中看到任何错误吗? 预先感谢。
namespace App\Controller;
use App\Entity\Product;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\AcceptHeader;
use Doctrine\ORM\ORMException;
use Doctrine\DBAL\DBALException;
public function index() {
$request = Request::createFromGlobals();
$content = $request->getContent();
$prod = [];
$response = null;
try
{
//$product->setPrice($request -> request -> get('price'));
....
}
catch(\DBALException $e){
$errorMessage = $e->getMessage();
$response = New Response();
$response -> setContent($errorMessage);
$response -> setStatusCode(Response::HTTP_BAD_REQUEST);
}
catch(Exception $e){
$errorMessage = $e->getMessage();
$response = New Response();
$response -> setContent($errorMessage);
$response -> setStatusCode(Response::HTTP_BAD_REQUEST);
}
$response->headers->set('Content-Type', 'application/json');
return $response;
}
答案 0 :(得分:0)
尽管您没有显示引发异常的行,但是您似乎没有使用正确的名称空间:TheDoctrine DBALException
被命名为名称空间,而\DBALException
在Symfony 4中不存在。 / p>
您可能想要:
catch (\Doctrine\DBAL\DBALException $e) {
或者只是:
catch (DBALException $e) {
如果您在课程顶部有use \Doctrine\DBAL\DBALException;
语句。
编辑:您显示的错误不是例外,而是错误。您应该对此进行修复,以使其不会发生,但是如果您要捕获它,可以像捕获异常一样进行:
catch (\Error $e) {
或:
catch (\TypeError $e) {