关于一个巨大的try/catch块,我会说的唯一的事情就是它停止try块中的所有处理,所以如果你有东西仍然可以完成,停止整个列车只是因为有一个季度轨道可能是矫枉过正。
我有一个类似的进程可以处理一堆文件,我们把每个进程放在一个独立的try/catch块中,这样它们就不会相互干扰。即破碎的第一个文件不会搞砸接下来的3个完美的文件。 catch块只是将错误消息添加到字符串中,然后通知用户文件中的格式不正确(或其他),但格式不正常,但正常处理的文件是正确的。
<!--- file one --->
<cftry>
some stuff
<cfcatch>
<cfset errors = errors & "file one did not work because #cfcatch.message#">
</cfcatch>
</cftry>
<!--- file 2 --->
<cftry>
some stuff
<cfcatch>
<cfset errors = errors & "file two did not work because #cfcatch.message#">
</cfcatch>
</cftry>
<cfetc...>
如果你遍历一组动态的,你可以把try/catch块内循环,这样的try/catch语句不会停止循环和其他的东西可以处理。当然这不工作,如果文件2取决于文件1 ...
<cfloop index = "i" ...>
<cftry>
some stuff
<cfcatch>
<cfset errors = errors & "file #i# did not work because #cfcatch.message#">
</cfcatch>
</cftry>
</cfloop>
可以吗?那么,如果你这样问:任何事情都可以完成。试图让“一个巨人''”暗示你有一大堆意大利面条代码,你应该考虑重构你的代码。 –
Tomalak
重构代码很诱人。但我们不能对现行制度做出重大改变,因为我们计划在不远处重写整个事情。但是这个变化需要完成,因为它是敏感的信息。我更多地问,如果这是可以接受的做法,以确保文件被删除。 –
有''([docs](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-74dd.html)),您可以使用它删除该文件。 –
Tomalak