CakePHP のエラーと例外処理

WBOY
WBOYオリジナル
2024-09-10 17:26:09850ブラウズ

システムを円滑に稼働させるためには、システムの障害に効果的に対処する必要があります。 CakePHP にはデフォルトのエラー トラップが付属しており、エラーが発生するとそれを出力してログに記録します。 Exceptions をキャッチするために、この同じエラー ハンドラーが使用されます。

エラー ハンドラは、debug が true の場合はエラーを表示し、debug が false の場合はエラーをログに記録します。 CakePHP には多数の例外クラスがあり、組み込みの例外処理により、キャッチされなかった例外がキャプチャされ、有用なページがレンダリングされます。

エラーと例外の構成

エラーと例外は、ファイル configapp.php で設定できます。エラー処理では、アプリケーションに合わせてエラー処理を調整できるいくつかのオプションを受け入れます -

オプション データ型 説明 エラーレベル int
Option Data Type Description
errorLevel int

The level of errors you are interested in capturing. Use the built-in php error constants, and bitmasks to select the level of error you are interested in.

trace bool

Include stack traces for errors in log files. Stack traces will be included in the log after each error. This is helpful for finding where/when errors are being raised.

exceptionRenderer string

The class responsible for rendering uncaught exceptions. If you choose a custom class, you should place the file for that class in src/Error. This class needs to implement a render() method.

log bool

When true, exceptions + their stack traces will be logged to CakeLogLog.

skipLog array

An array of exception class names that should not be logged. This is useful to remove NotFoundExceptions or other common, but uninteresting logs messages.

extraFatalErrorMemory int

Set to the number of megabytes to increase the memory limit by, when a fatal error is encountered. This allows breathing room to complete logging or error handling.

キャプチャしたいエラーのレベル。組み込みの PHP エラー定数とビットマスクを使用して、関心のあるエラーのレベルを選択します。 トレース ブール値

エラーのスタック トレースをログ ファイルに含めます。各エラーの後にスタック トレースがログに記録されます。これは、エラーがいつどこで発生したかを見つけるのに役立ちます。

例外レンダラー 文字列

キャッチされなかった例外のレンダリングを担当するクラス。 カスタム クラスを選択した場合は、そのクラスのファイルを

src/Error

に配置する必要があります。このクラスは、render() メソッドを実装する必要があります。

ログ ブール値
<?php use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('/exception/:arg1/:arg2',
      ['controller'=>'Exps','action'=>'index'],
      ['pass' => ['arg1', 'arg2']]);
   $builder->fallbacks();
});
true の場合、例外とそのスタック トレースが

CakeLogLog に記録されます。

スキップログ 配列 ログに記録しない例外クラス名の配列。これは、NotFoundExceptions またはその他の一般的だが興味のないログ メッセージを削除するのに役立ちます。

extraFatalErrorMemory int 致命的なエラーが発生した場合にメモリ制限を増やすメガバイト数を設定します。これにより、ログ記録やエラー処理を完了するための余裕が生まれます。
<?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  10))
               throw new Exception("One of the number is out of range [1-10].");
         } catch(\Exception $ex){
            echo $ex->getMessage();
         }
      }
   }
?>

次のコードに示すように、config/routes.php ファイルを変更します。 config/routes.php

src/Controller/ExpsController.php に
This is CakePHP tutorial and this is an example of Passed arguments.<br>
Argument-1: =$argument1?><br>
Argument-2: =$argument2?><br>
ExpsController.php

ファイルを作成します。

コントローラー ファイルに次のコードをコピーします。

src/Controller/ExpsController.php

CakePHP のエラーと例外処理src/Template にディレクトリ Exps を作成し、そのディレクトリの下に、index.php という名前の View ファイルを作成します。そのファイルに次のコードをコピーします。 src/Template/Exps/index.php 次の URL にアクセスして、上記の例を実行します。 http://localhost/cakephp4/Exception/5/0 出力 実行すると、次の出力が表示されます。

以上がCakePHP のエラーと例外処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:CakePHP サービス次の記事:CakePHP サービス