Packages:
default
System
System.Caching
System.Collections
System.Data
System.Data.ActiveRecord
System.Data.ActiveRecord.Relations
System.Data.ActiveRecord.Scaffold
System.Data.ActiveReecord.Scaffold.InputBuilder
System.Data.Commom.Sqlite
System.Data.Common
System.Data.Common.Mssql
System.Data.Common.Mysql
System.Data.Common.Oracle
System.Data.Common.Pgsql
System.Data.Common.Sqlite
System.Data.DataGateway
System.Data.SqlMap
System.Data.SqlMap.Configuration
System.Data.SqlMap.Statements
System.Exceptions
System.I18N
System.IO
System.Security
System.Util
System.Web
System.Web.Services
System.Web.UI
System.Web.UI.ActiveControls
System.Web.UI.WebControls
System.Web.UI.WebControls.assets
System.Xml


Classes:
Keyword

Class TErrorHandler

TComponent
   |
   --TApplicationComponent
      |
      --TModule
         |
         --TErrorHandler

Direct Known Sub-classes:

TErrorHandler class

TErrorHandler handles all PHP user errors and exceptions generated during servicing user requests. It displays these errors using different templates and if possible, using languages preferred by the client user. Note, PHP parsing errors cannot be caught and handled by TErrorHandler.

The templates used to format the error output are stored under System.Exceptions. You may choose to use your own templates, should you not like the templates provided by Prado. Simply set ErrorTemplatePath to the path (in namespace format) storing your own templates.

There are two sets of templates, one for errors to be displayed to client users (called external errors), one for errors to be displayed to system developers (called internal errors). The template file name for the former is error[StatusCode][-LanguageCode].html, and for the latter it is exception[-LanguageCode].html, where StatusCode refers to response status code (e.g. 404, 500) specified when THttpException is thrown, and LanguageCode is the client user preferred language code (e.g. en, zh, de). The templates error.html and exception.html are default ones that are used if no other appropriate templates are available. Note, these templates are not Prado control templates. They are simply html files with keywords (e.g. %%ErrorMessage%%, %%Version%%) to be replaced with the corresponding information.

By default, TErrorHandler is registered with TApplication as the error handler module. It can be accessed via TApplication::getErrorHandler(). You seldom need to deal with the error handler directly. It is mainly used by the application object to handle errors.

TErrorHandler may be configured in application configuration file as follows <module id="error" class="TErrorHandler" ErrorTemplatePath="System.Exceptions" />

Since: 3.0
Author: Qiang Xue <qiang.xue@gmail.com>

Method Summary
protected  void
displayException ( Exception $exception)
Displays exception information.
protected  string
getErrorTemplate ( integer $statusCode, Exception $exception)
Retrieves the template used for displaying external exceptions.
string
protected  string
getExceptionTemplate ( Exception $exception)
Retrieves the template used for displaying internal exceptions.
void
handleError ( mixed $sender, mixed $param)
Handles PHP user errors and exceptions.
protected  void
handleExternalError ( integer $statusCode, Exception $exception)
Displays error to the client user.
protected  void
handleRecursiveError ( Exception $exception)
Handles error occurs during error handling (called recursive error).
protected  string
hideSecurityRelated ( string $value, Exception|null$exception $exception)
void
init ( TXmlElement $config)
Initializes the module.
void
setErrorTemplatePath ( string $value)
Sets the path storing all error and exception template files.
Methods Inherited From TModule
TModule::getID(), TModule::init(), TModule::setID()
Methods Inherited From TApplicationComponent
TApplicationComponent::getApplication(), TApplicationComponent::getRequest(), TApplicationComponent::getResponse(), TApplicationComponent::getService(), TApplicationComponent::getSession(), TApplicationComponent::getUser(), TApplicationComponent::publishAsset(), TApplicationComponent::publishFilePath()
Methods Inherited From TComponent
TComponent::addParsedObject(), TComponent::attachEventHandler(), TComponent::canGetProperty(), TComponent::canSetProperty(), TComponent::createdOnTemplate(), TComponent::detachEventHandler(), TComponent::evaluateExpression(), TComponent::evaluateStatements(), TComponent::getEventHandlers(), TComponent::getSubProperty(), TComponent::hasEvent(), TComponent::hasEventHandler(), TComponent::hasProperty(), TComponent::raiseEvent(), TComponent::setSubProperty(), TComponent::__get(), TComponent::__set()

Constant Summary
string ERROR_FILE_NAME error template file basename
string EXCEPTION_FILE_NAME exception template file basename
int SOURCE_LINES number of lines before and after the error line to be displayed in case of an exception

Method Details

displayException

protected void displayException (Exception $exception )

Displays exception information.

Exceptions are displayed with rich context information, including the call stack and the context source code. This method is only invoked when application is in Debug mode.

Input
Exception$exceptionexception instance
Output
Exception

getErrorTemplate

protected string getErrorTemplate (integer $statusCode , Exception $exception )

Retrieves the template used for displaying external exceptions.

External exceptions are those displayed to end-users. They do not contain error source code. Therefore, you might want to override this method to provide your own error template for displaying certain external exceptions. The following tokens in the template will be replaced with corresponding content: %%StatusCode%% : the status code of the exception %%ErrorMessage%% : the error message (HTML encoded). %%ServerAdmin%% : the server admin information (retrieved from Web server configuration) %%Version%% : the version information of the Web server. %%Time%% : the time the exception occurs at

Input
integer$statusCodestatus code (such as 404, 500, etc.)
Exception$exceptionthe exception to be displayed
Output
string the template content
Exception

getErrorTemplatePath

public string getErrorTemplatePath ()

Output
string the directory containing error template files.
Exception

getExceptionTemplate

protected string getExceptionTemplate (Exception $exception )

Retrieves the template used for displaying internal exceptions.

Internal exceptions will be displayed with source code causing the exception. This occurs when the application is in debug mode.

Input
Exception$exceptionthe exception to be displayed
Output
string the template content
Exception

handleError

public void handleError (mixed $sender , mixed $param )

Handles PHP user errors and exceptions.

This is the event handler responding to the Error event raised in TApplication. The method mainly uses appropriate template to display the error/exception. It terminates the application immediately after the error is displayed.

Input
mixed$sendersender of the event
mixed$paramevent parameter (if the event is raised by TApplication, it refers to the exception instance)
Output
Exception

handleExternalError

protected void handleExternalError (integer $statusCode , Exception $exception )

Displays error to the client user.

THttpException and errors happened when the application is in Debug mode will be displayed to the client user.

Input
integer$statusCoderesponse status code
Exception$exceptionexception instance
Output
Exception

handleRecursiveError

protected void handleRecursiveError (Exception $exception )

Handles error occurs during error handling (called recursive error).

THttpException and errors happened when the application is in Debug mode will be displayed to the client user. Error is displayed without using existing template to prevent further errors.

Input
Exception$exceptionexception instance
Output
Exception

hideSecurityRelated

protected string hideSecurityRelated (string $value , Exception|null$exception $exception )

Input
string$value
Exception|null$exception$exception
Output
Exception

init

public void init (TXmlElement $config )

Initializes the module.

This method is required by IModule and is invoked by application.

Input
TXmlElement$configmodule configuration
Output
Exception

setErrorTemplatePath

public void setErrorTemplatePath (string $value )

Sets the path storing all error and exception template files.

The path must be in namespace format, such as System.Exceptions (which is the default).

Input
string$valuetemplate path in namespace format
Output
Exception
throwsTConfigurationException if the template path is invalid


Constant Details

ERROR_FILE_NAME

error template file basename

Type:

string

Value:

'error'

EXCEPTION_FILE_NAME

exception template file basename

Type:

string

Value:

'exception'

SOURCE_LINES

number of lines before and after the error line to be displayed in case of an exception

Type:

int

Value:

12