關於一個巨大的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