Учебники

CakePHP — ошибки и обработка исключений

Отказ системы должен быть эффективно обработан для бесперебойной работы системы. 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

Выход

После выполнения вы получите следующий вывод.