捕获错误时如何继续CFloop循环执行?
解决方案:将循环内所有风险代码纳入try/catch块
你的问题根源在于循环体内有部分代码没有被<cftry>包裹——如果这部分代码抛出异常,因为没有被捕获,会直接终止整个循环。要实现"出错时记录数据且继续循环",只需把循环里所有可能出错的代码都放进<cftry>块内部即可。
修改后的代码示例:
<cfloop from="2" to="#ArrayLen(MyList)#" index="i"> <cftry> ---Line of code--- <!--- 把原来在try外的代码移进来 ---> ---Line of code---- <cfcatch type="any"> <cffile action = "append" file="#TempDirectory#\ErrorFile.csv" Output="#Mylist[i]#" addnewline="yes"> </cfcatch> </cftry> </cfloop>
原理说明
<cftry>块会捕获其内部所有代码抛出的异常,当<cfcatch>处理完错误后,程序会从<cftry>块的结尾继续执行,也就是回到<cfloop>的下一次迭代,不会中断整个循环流程。
如果需要更精细的错误记录,还可以在<cfcatch>中加入异常详情(比如错误信息、堆栈细节),方便后续排查问题:
<cfcatch type="any"> <cffile action = "append" file="#TempDirectory#\ErrorFile.csv" Output="#Mylist[i]#,#Now()#,#cfcatch.Message#,#Replace(cfcatch.Detail,',',';','all')#" addnewline="yes"> </cfcatch>
内容的提问来源于stack exchange,提问作者sangeeta bhat
相关产品推荐
相关产品推荐

