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 に答える