Отказ системы должен быть эффективно обработан для бесперебойной работы системы. CakePHP поставляется с перехватом ошибок по умолчанию, который печатает и регистрирует ошибки по мере их возникновения. Этот же обработчик ошибок используется для перехвата исключений . Обработчик ошибок отображает ошибки, когда отладка истинна, и регистрирует ошибки, если отладка ложна. CakePHP имеет несколько классов исключений, а встроенная обработка исключений перехватит любое необработанное исключение и отобразит полезную страницу.
Ошибки и исключения конфигурации
Ошибки и исключения могут быть настроены в файле config \ app.php . Обработка ошибок принимает несколько опций, которые позволяют адаптировать обработку ошибок для вашего приложения —
вариант | Тип данных | Описание |
---|---|---|
Равен | ИНТ | Уровень ошибок, которые вы заинтересованы в фиксации. Используйте встроенные константы ошибок php и битовые маски, чтобы выбрать уровень ошибки, который вас интересует. |
след | BOOL | Включите трассировки стека для ошибок в файлах журнала. Следы стека будут включены в журнал после каждой ошибки. Это полезно для определения, где и когда возникают ошибки. |
exceptionRenderer | строка | Класс, отвечающий за рендеринг необработанных исключений. Если вы выбираете пользовательский класс, вы должны поместить файл для этого класса в src / Error . Этот класс должен реализовывать метод render () . |
журнал | BOOL | Когда это правда, исключения + их трассировки стека будут записаны в Cake \ Log \ Log . |
skipLog | массив | Массив имен классов исключений, которые не должны регистрироваться. Это полезно для удаления NotFoundExceptions или других распространенных, но неинтересных сообщений в журналах. |
extraFatalErrorMemory | ИНТ | Установите количество мегабайт, чтобы увеличить ограничение памяти при возникновении фатальной ошибки. Это позволяет передышке завершить регистрацию или обработку ошибок. |
пример
Внесите изменения в файл config / rout.php, как показано в следующем коде.
конфиг / routes.php
<?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('/exception/:arg1/:arg2',[ 'controller'=>'Exps','action'=>'index'],['pass' => ['arg1', 'arg2']]); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
Создайте файл ExpsController.php в src / Controller / ExpsController.php . Скопируйте следующий код в файл контроллера.
SRC / Controller / ExpsController.php
<?php namespace App\Controller; use App\Controller\AppController; use Cake\Core\Exception\Exception; class ExpsController extends AppController{ public function index($arg1,$arg2){ try{ $this->set('argument1',$arg1); $this->set('argument2',$arg2); if(($arg1 < 1 || $arg1 > 10) || ($arg2 < 1 || $arg2 > 10)) throw new Exception("One of the number is out of range[1-10]."); }catch(\Exception $ex){ echo $ex->getMessage(); } } } ?>
Создайте каталог Exps в src / Template и в этом каталоге создайте файл View с именем index.ctp . Скопируйте следующий код в этот файл.
SRC / Template / EXPS / index.ctp
This is CakePHP tutorial and this is an example of Passed arguments. Argument-1: <?=$argument1?> Argument-2: <?=$argument2?>
Выполните приведенный выше пример, посетив следующий URL.
HTTP: // локальный: 85 / CakePHP / исключение / 5/0
Выход
После выполнения вы получите следующий вывод.