在ColdFusion中捕获错误数据库错误

Ted*_*tel 1 coldfusion

我有一个与SQL Server数据库通信的ColdFusion cfm文件.现在,如果数据库连接出现问题,它会显示ColdFusion生成的错误页面.有没有办法可以捕获错误并显示一条消息,如"数据库服务器暂时关闭,请稍后再回来"?摊晒

Jak*_*sel 7

您可以将try/catch用于单个查询 - 这将是最精细的方法.

<cftry>

  <cfquery datasource="myDSN">BROKEN SQL</cfquery>

  <cfcatch type="database">
    <h1>Database Offline!</h1>
    <p>Sorry, the database threw an error: #cfcatch.queryError#.  Try again later.</p><cfabort>
  </cfcatch>

</cftry>
Run Code Online (Sandbox Code Playgroud)

您还可以使用cferror标记进行全局异常处理(将其放在Application.cfm中):

<cferror 
  type="exception" 
  exception="database" 
  template="myFriendlyDatabaseErrorTemplate.cfm">
Run Code Online (Sandbox Code Playgroud)

您还可以在Application.cfc中使用onError方法,它也会(像cferror标记一样)捕获请求期间发生的所有错误:

<cffunction name="onError" returnType="void">
    <cfargument name="Exception" required=true/>
    <cfargument name="EventName" type="String" required=true/>
    <cfif arguments.Exception IS "database">
      <cfinclude template="myFriendlyDatabaseErrorTemplate.cfm">
    </cfif>
</cffunction>
Run Code Online (Sandbox Code Playgroud)