我正在尝试在 Zend 框架中使用事务并拥有一个工作脚本。
然而,在测试中,我注意到一个 try/catch 函数将捕获任何异常,除了由 Mysql 服务器不活动引起的异常。
这应该发生吗?如果我的服务器崩溃了,我担心会返回一个丑陋的 Zend 异常,并且应用程序将停止优雅地失败。
我的代码如下所示:
function insertInbox ($userId, $mail_id )
{
$db = Zend_Db_Table::getDefaultAdapter();
$table = new Application_Model_DbTable_Inbox;
try {
$db->beginTransaction();
$data = array (
'user_id' => $userId,
'mail_id' => $mail_id
);
$insertedId[] = $table -> insert($data);
$db -> commit();
return $insertedId;
}
catch(exception $e){
$db->rollback();
return "insert failed";//.$e;
}
}
$tt = insertInbox ( 666,666);
print_r($tt);
捕获到类似异常的重复条目,并返回临时自定义错误消息 -插入失败。但是如果我关闭数据库服务器,php catch 不会捕获这个错误:
**Message:** SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
任何想法表示赞赏。