每个子系统错误文件在FW / 1中

时间:2012-12-07 16:23:52

标签: coldfusion error-handling fw1

我试图获取FW / 1中的每个子系统错误文件。我知道以下内容不起作用。

variables.framework = {
...

error = getSubsystem() .error', 
...

更新

我试过

<cffunction name="onError">
<cfargument name="Exception" type="Struct" required />
<cfargument name="Event"     type="String" required />

<cfif Arguments.Exception.Type EQ 'missinginclude' >
    <cfoutput>#layout('#getSubsystem()#:default',view('login/error'))#</cfoutput>
    <cfreturn false />
</cfif>

<cfreturn super.onError(ArgumentCollection=Arguments) />
</cffunction>

我收到错误:

传递给onError函数的EXCEPTION参数不是Struct类型。

如果组件名称被指定为此参数的类型,则可能无法找到组件的定义文件或无法访问该组件的定义文件。

The error occurred in /Applications/ColdFusion10/cfusion/wwwroot/Pluma/Application.cfc: line 189
 187 : </cffunction>    
 188 :  
 189 : <cffunction name="onError">
 190 :     <cfargument name="Exception" type="Struct" required />
 191 :     <cfargument name="Event"     type="String" required />

1 个答案:

答案 0 :(得分:1)

您可以做的是覆盖Application.cfc中的 onError 方法,以手动调用相关的每个子系统文件。

以下是使用非默认子系统中的布局处理missinginclude错误的示例:

<cffunction name="onError">
    <cfargument name="Exception" type="Struct" required />
    <cfargument name="Event"     type="String" required />

    <cfif Arguments.Exception.Type EQ 'missinginclude' >
        <cfoutput>#layout('subsys2:default',view('main:errors/404'))#</cfoutput>
        <cfreturn false />
    </cfif>

    <cfreturn super.onError(ArgumentCollection=Arguments) />
</cffunction>

返回super.onError将导致调用标准错误处理。

为了完全按子系统制作,您可以执行view(getSubsystem()&':errors')或类似的操作。

如果您正在执行可能复杂的逻辑,请记住在错误处理中使用适当的try / catch - tracking错误可能会很尴尬。