在foreach循环程序数据库时try和catch的使用

文章讲述了在处理数据库批量导入时,对于foreach循环中try-catch异常处理结构的两种不同用法。第一种方式允许单条数据异常后继续执行,而第二种方式在数据异常时会终止循环,适用于需要保证数据一致性的场景,通常配合事务处理使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在foreach循环程序数据库时try和catch的使用

在之前工作中遇到过EXCEL导入数据错误的问题,数据中断了。(当时是测试老胡发现的),后经排查是因为foreach循环体放到了try捕捉异常catch内部了,即第2种情况。由前同事APSON帮助调查了该问题。今天又写到这块,所以记录下日记巩固加深下印象。

第1种方式是把try放入foreach循环体内部中:这种情况当其中1条数据插入异常时,不会影响下一条语句继续执行
foreach($RESULT as $insert_row)
{
    try{
        $resp       = MDL::create($insert_row);
    } catch (\Exception $e){
        Log::error("SQL异常: ".$e->getMessage());
        continue;
    }
}//

//第2种是foreach放入try内部中:当其中1条数据插入异常时,会终止循环,不会再执行下一条语句,跳到catch中。
一般用于批量写数据时,要求数据一致性的话,需要修改下面的程序,加上事务处理。即要么全部插入成功,如果其中1条语句写入错误则全部回滚
try{
    foreach($RESULT as $insert_row)
    {
        $resp       = MDL::create($insert_row);
    }//
} catch (\Exception $e){
    Log::error("SQL异常: ".$e->getMessage());
    continue;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值