我试图获取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 />
答案 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错误可能会很尴尬。