為什麼php 框架的資料庫操作類,在插入和更新失敗的時候為什麼不能直接丟擲系統異常?????而要自己再進行判斷返回結果?

WangYuanDa發表於2020-11-09

php 是通過fpm來處理請求,一個fpm程式處理一條請求,在資料庫增刪改查執行遇到錯誤時,就說明這條請求失敗了,為什麼框架在處理DB類的時候不能直接丟擲異常,這樣在一個事務中執行多個增改查就無須判斷每條語句的執行結果了。

舉個例子

class A {
    public function testA(){
        try {
            DB::beginTransaction();
            $res = GoodsModel::on()->where('id', $id)->update();
            if ($res) { // 如果update失敗了 就直接停了,走catch語句不是更好
                $retCode = OrderModel::on()->insert();
                if (!$retCode) {
                     throw new Exception("處理失敗");
                }
            }
            DB::commit();     
        } catch (Exception $ex) {
            DB::rollback();
            throw $ex;
         }
    }
}

如果用異常方式,這樣不是更好????還請大佬作出解答!

class A {
    public function testA(){
        try {
            DB::beginTransaction();
            GoodsModel::on()->where('id', $id)->update();
            OrderModel::on()->insert();
            DB::commit();     
        } catch (Exception $ex) {
            DB::rollback();
            throw $ex;
         }
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章