我有这段代码:
try {
// Get a response from an API
$apiBody = $this->api->get('Info')
->getBody();
} catch (\Exception $e) {
if ($e instanceof ConnectException) {
// Set a flash error message
$this->session->getFlashBag()->add('danger', 'Errore durante l\'importazione. URL non valido.');
$wrongUrlNotification = new Notification();
$wrongUrlNotification->setForUser($user)
->setMessage('Errore durante l\'importazione. URL non valido.');
$this->em->persist($wrongUrlNotification);
} else {
// Set a flash error message
$message = 'Errore durante l\'importazione. Il messaggio restituito dal sistema è il seguente: ' . $e->getMessage() . ' [CODICE: ' . $e->getCode() . ']';
$this->session->getFlashBag()->add('danger', $message);
$exceptionNotification = new Notification();
$exceptionNotification->setForUser($user)
->setCreatedOn(new \DateTime())
->setCode(0)
->setMessage($message)
->setDebug($apiBody);
$this->em->persist($exceptionNotification);
}
}
问题在于变量$apiBody
。
如您所见,我在try
块中给它一个值。如果抛出异常,我想在数据库中存储API返回的字符串,以便稍后调试它,并了解导致错误的原因。
问题是PHPStorm告诉我,catch块中的$apiBody
没有被定义,并且在数据库中它也被存储为null
值。
我不明白为什么......我从未处理过这种情况,但我认为变量是定义的。
我错过了什么?如果触发异常,如何将API的响应正文存储在数据库中?
答案 0 :(得分:2)
在$this->api->get('Info')->getBody()
的某处抛出了异常。它甚至没有返回一个值,更不用说将该值赋给$apiBody
了。确实没有定义变量 ,因为在定义变量的过程中抛出了异常。