首頁 > 後端開發 > php教程 > CakePHP 錯誤與異常處理

CakePHP 錯誤與異常處理

WBOY
發布: 2024-09-10 17:26:09
原創
863 人瀏覽過

系統故障需要有效的處理,以確保系統的順利運作。 CakePHP 帶有預設的錯誤捕獲,當發生錯誤時列印並記錄錯誤。同樣的錯誤處理程序用於捕捉異常

當 debug 為 true 時,錯誤處理程序顯示錯誤;當 debug 為 false 時,錯誤處理程序會記錄錯誤。 CakePHP 有許多異常類,內建的異常處理將捕獲任何未捕獲的異常並呈現有用的頁面。

錯誤和異常配置

錯誤和異常可以在檔案configapp.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  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 輸出 執行後,您將收到以下輸出。
選項 資料型別 描述
錯誤等級 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 或其他常見但無趣的日誌訊息很有用。

額外的致命錯誤記憶體 int 設定為在遇到致命錯誤時增加記憶體限制的兆位元組數。這為完成日誌記錄或錯誤處理提供了喘息的空間。

以上是CakePHP 錯誤與異常處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板