0

我正在尝试获取 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 />
4

1 回答 1

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 - 在错误处理中跟踪错误可能会很尴尬。

于 2012-12-07T19:44:30.320 回答