Error Handler provides basic error and exception handling for your application. It captures and handles all unhandled exceptions and errors. Displays helpful framework errors when debug > 1.
When debug < 1 a CakeException will render 404 or 500 errors. If an uncaught exception is thrown and it is a type that ErrorHandler does not know about it will be treated as a 500 error.
You can implement application specific exception handling in one of a few ways. Each approach gives you different amounts of control over the exception handling process.
exceptionRenderer
option to inject an Exception renderer. This will let you keep the existing handling logic but override the rendering logic.This gives you full control over the exception handling process. The class you choose should be loaded in your config/error.php and registered as the default exception handler.
exceptionRenderer
If you don't want to take control of the exception handling, but want to change how exceptions are rendered you can use exceptionRenderer
option to choose a class to render exception pages. By default Cake\Error\ExceptionRenderer
is used. Your custom exception renderer class should be placed in src/Error.
Your custom renderer should expect an exception in its constructor, and implement a render method. Failing to do so will cause additional errors.
Using the built-in exception handling, you can log all the exceptions that are dealt with by ErrorHandler by setting log
option to true in your config/error.php. Enabling this will log every exception to Log and the configured loggers.
Error handler also provides the built in features for handling php errors (trigger_error). While in debug mode, errors will be output to the screen using debugger. While in production mode, errors will be logged to Log. You can control which errors are logged by setting errorLevel
option in config/error.php.
When ErrorHandler is used for handling errors, you can enable error logging by setting the log
option to true. This will log all errors to the configured log handlers.
You can control which errors are logged / displayed by ErrorHandler by setting errorLevel
. Setting this to one or a combination of a few of the E_* constants will only enable the specified errors:
$options['errorLevel'] = E_ALL & ~E_NOTICE;
Would enable handling for all non Notice errors.
__construct( array $options [] )
Constructor
$options
optional [] _clearOutput( )
Clear output buffers so error pages display properly.
Easily stubbed in testing.
_displayError( array $error , boolean $debug )
Display an error.
Template method of BaseErrorHandler.
Only when debug > 2 will a formatted error be displayed.
$error
$debug
_displayException( Exception $exception )
Displays an exception response body.
$exception
_sendResponse( string|Cake\Network\Response $response )
Method that can be easily stubbed in testing.
$response
_getMessage( Exception $exception )
Generates a formatted error message
$exception
_logError( string $level , array $data )
Log an error.
$level
$data
_logException( Exception $exception )
Handles exception logging
$exception
_requestContext( Cake\Http\ServerRequest $request )
Get the request context for an error/exception trace.
Cake\Http\ServerRequest
$request
_stop( integer $code )
Stop the process.
Implemented in subclasses that need it.
$code
handleError( integer $code , string $description , string|null $file null , integer|null $line null , array|null $context null )
Set as the default error handler by CakePHP.
Use config/error.php to customize or replace this error handler. This function will use Debugger to display errors when debug > 0. And will log errors to Log, when debug == 0.
You can use the 'errorLevel' option to set what type of errors will be handled. Stack traces for errors can be enabled with the 'trace' option.
$code
$description
$file
optional null $line
optional null $context
optional null handleException( Exception $exception )
Handle uncaught exceptions.
Uses a template method provided by subclasses to display errors in an environment appropriate way.
$exception
handleFatalError( integer $code , string $description , string $file , integer $line )
Display/Log a fatal error.
$code
$description
$file
$line
increaseMemoryLimit( integer $additionalKb )
Increases the PHP "memory_limit" ini setting by the specified amount in kilobytes
$additionalKb
mapErrorCode( integer $code )
Map an error code into an Error word, and log location.
$code
wrapAndHandleException( Exception|Error $exception )
Checks the passed exception type. If it is an instance of Error
then, it wraps the passed object inside another Exception object for backwards compatibility purposes.
$exception
© 2005–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.4/class-Cake.Error.ErrorHandler.html