【发布时间】:2019-02-15 21:00:45
【问题描述】:
try {
$sql = "UPDATE table bla bla bla";
$bind_param_arr = array();
$stmt = $conn_p->prepare($sql);
$stmt->execute($bind_param_arr);
createLog(200);
echo (json_encode(array('status' => 200, 'data' => 'Updated Successfully'));
} catch (PDOException $e) {
createLog(500);
echo (json_encode(array('status' => 500, 'data' => 'There is some error'));
}
function createLog($status)
{
$log_file = "log.txt";
$openfile = fopen($log_file, "a");
if ( ! $openfile) {
throw new Exception("unable to create log file");
}
$datetime = date("Y-m-d H:i:s a");
fwrite($openfile, $datetime);
fwrite($openfile, 'Bla bla bla');
fwrite($openfile, "\n");
fclose($openfile);
}
它没有捕获简单的异常,因为我在 catch 块中使用了 PDOException 类的实例。我可以使用异常类的实例而不是 PDOException (然后它的工作)。 什么是正确的方法?
【问题讨论】:
-
添加另一个
} catch (Exception $e) {? -
您可以拥有多个
catch块。但是您可能不应该使用Exception,因为这太笼统了。相反,定义您自己的扩展Exception并抛出(并捕获......)它。