Adobe ColdFusion 버전 8 이하를 사용하면 모든 cfqueries가 "catchError"라는 database.cfc의 함수를 호출하는 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, 객체, 보안, 템플릿 및 SEARCHENGINE) ?
질문 2 : 나는 이러한 오류도 기록하고 싶지만 텍스트 파일이 아니라 데이터베이스에 기록하려고합니다. 물론 데이터베이스에 데이터베이스 오류를 기록하는 문제가 있습니다 ...
질문 3 :이 세션의 첫 번째 오류 인 경우 누군가에게 이메일을 보내고 싶을 수 있습니다. 당신의 application.cfc에서
application.cfc를 사용하는 경우 cferror가 아닌 onError (http://livedocs.adobe.com/coldfusion/8/htmldocs/AppEvents_06.html#1188543)를 사용해야합니다.그렇지 않으면 못을 박는 드라이버를 사용하는 것과 같습니다. 제대로 작동하지만 도구를 잘못 사용하고있는 것입니다. –
나는 왜 OnError가 더 나은지 궁금하다. 내 application.cfc에서 html 출력하는 것을 좋아하지 않기 때문에 사용하지 않는 것이 좋습니다. – Soldarnal
그 자체로 "더 나은"것은 아니지만, application.cfc 프레임 워크와 관련된 오류 처리 메커니즘입니다. occam의 면도날에서의 운동이라고 생각하십시오. 가장 간단한 설명이 일반적으로 가장 좋습니다. 발굽이 들리면 "얼룩말"이 아니라 "말"이라고 생각할 것입니다. 다른 개발자가 application.cfc를 본다면 "cferror"가 아니라 "onError"라고 생각할 것입니다. onError 메서드는 또한 실제로 유비쿼터스가되는 이점이 있습니다. cferror 호출이 처리되지 않기 전에 발생하는 오류입니다. by를 사용하면 원하는 경우 onError 핸들러 본문에서 cfinclude를 쉽게 사용할 수 있습니다. –