使用Adobe ColdFusion版本8及以下版本,我的所有cfqueries都被包裝在調用database.cfc中名爲「CatchError」的函數的try catch中。良好的通用try/catch例程
<cftry>
<cfquery datasource="myDatasource">
UPDATE TableName SET
...
WHERE ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.ID#">
</cfquery>
<cfcatch>
<cfset local.result = Variables.objDatabase.CatchError(cfcatch)>
</cfcatch>
</cftry>
Q1:是否有一個已經寫了一個良好的通用錯誤捕手,考慮到各種不同的異常類型(所有,應用程序,數據庫,表達,鎖,MissingInclude,對象,安全性,模板和本地搜索引擎) ?第二季度:我想我也想記錄這些錯誤,也許不是文本文件,而是數據庫。當然,你看到的問題是...在數據庫中記錄數據庫錯誤...
問題3:如果這是本次會話的第一個錯誤,我可能會向某人發送電子郵件。
如果您使用application.cfc,您應該使用onError(http://livedocs.adobe.com/coldfusion/8/htmldocs/AppEvents_06.html#1188543),而不是cferror。否則,就像使用螺絲刀敲擊指甲 - 它可能會起作用,但是您錯誤地使用了您的工具。 – 2010-02-23 16:18:06
我很好奇爲什麼OnError更好?我不喜歡使用它,因爲我不喜歡在我的application.cfc中輸出html。 – Soldarnal 2010-02-23 16:57:23
本身並不是「更好」,但它是與application.cfc框架相關聯的錯誤處理機制。考慮它是奧卡姆剃刀的練習 - 最簡單的解釋通常是最好的。如果你聽到蹄子,你會想到「馬」而不是「斑馬」。如果另一個開發人員看到application.cfc,他們會認爲「onError」,而不是「cferror」。 onError方法也具有真正無處不在的優點;在cferror調用之前發生的錯誤將被處理。通過這個,如果你願意,你可以在onError處理程序的主體內輕鬆使用cfinclude。 – 2010-02-23 18:23:47