Файлы ошибок для каждой подсистемы в FW/1
Я пытаюсь получить ошибки подсистемы в 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>
И я получаю ошибку:
Аргумент EXCEPTION, передаваемый в функцию onError, не относится к типу 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 ответ
Что вы можете сделать, это переопределить метод onError в вашем Application.cfc, чтобы вручную вызывать соответствующие файлы для каждой подсистемы.
Вот пример обработки ошибок 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 при обработке ошибок.