无法在PHP中捕获Twilio Sms错误响应



我已经编写了以下php代码来在一个文件中发送短信:

<?php
use TwilioRestClient;
function sendSMS($twilioAPIKeys, $messageBody) {
try {
$to = "+919915183552";
// $twilioAPIKeys is an array which contains twilio credentials
$sid = $twilioAPIKeys['AccountSID'];      
$token = $twilioAPIKeys['AccountToken'];
$from = $twilioAPIKeys['twilio_number'];
$client = new Client($sid, $token);
$message = $client->messages->create("$to", // to
[
"body" => "$body",
"from" => "$from"
]         
);
print_r($message->sid);
}
catch(Exception $ex) {
print ($ex->getMessage());
}
}
?>

在第二个php文件中,我包含了第一个文件,并按如下方式调用该函数:

try {
sendSMS($twilioAPIKeys, 'Hi, it is first sms');
writeLog ("Now, I am writing a status in log");
saveInDatabase();
}
catch(Exception $ex) {
print_r("outer exception", $ex->getMessage());
} 

当发送短信时出现任何错误时,我会遇到一个问题。当短信发送成功时,代码会正常工作。但问题是:短信发送中的异常或错误没有为语句print_r($message)打印输出,如果出现错误,则php的第二个文件中存在400个错误,但php代码的进一步进程也被停止,错误也没有进入catch块。

如何在第一个文件的catch部分中获取出站twilio短信的print_r($message)或响应代码或发送状态,但短信错误正在进入第二个文件的catch块,如何仅针对短信错误进入第一个文件catch部分?

您的代码没有捕获异常,因为它已经被早期代码捕获。异常在抛出后只能捕获一次。如果你想再接住它,你需要再扔一次。

<?php
function sendSMS($a, $b)
{
try {
// do stuff
} catch (Exception $e) {
echo "First exception! " . $e->getMessage();
throw $e;
}
}

然后在你的第二个文件中:

try {
sendSMS($a, $b);
} catch (Exception $e) {
echo "Second exception! " . $e->getMessage();
}

最新更新