This will not actually the answer you have asked but I have customized error handler in Yii1, and hope it have same behavior in Yii2. You can change it on config/main.php as:
'errorHandler' => [
'errorAction' => 'site/error' // To error/errorHandler
],
And the Controller Class error have the following lines. You can change it on your need.
class ErrorController extends CController {
public $layout = '//layouts/column1';
/**
* This is the action to handle external exceptions.
*/
public function actionErrorHandler() {
if ($error = Yii::app()->errorHandler->error) {
if ('CDbException' != $error['type']) {
if (Yii::app()->request->isAjaxRequest)
echo $error['message'];
else
$this->commonError($error);
}else if ('CDbException' == $error['type']) {
if (Yii::app()->request->isAjaxRequest)
echo $error['message'] = 'The system is unable to resolve the database error !';
else
$this->databaseError($error);
}
}
}
/**
*
* @param type array $error
* @access : Internal, type private
* @throws: Http exception.
*/
private function commonError($error) {
$this->render('code_error', $error);
}
/**
*
* @param type array $error
* @throws Exception
*/
private function databaseError($error) {
if (empty($error)) {
$error['code'] = '404';
$error['message'] = 'Unknown error !';
$this->render('code_error', $error);
Yii::app()->end(0, true);
}
$error['message'] = 'The system is unable to resolve the database error !';
$this->render('database_error', $error);
}
}