Thứ Hai, 22 tháng 10, 2018

CakePHP - Xử lý lỗi và ngoại lệ

Thất bại của hệ thống cần phải được xử lý hiệu quả để chạy mượt mà của hệ thống. PHP đi kèm với bẫy lỗi mặc định để in và ghi nhật ký lỗi khi chúng xảy ra.

Trình xử lý lỗi tương tự này được sử dụng để bắt ngoại lệ . Trình xử lý lỗi hiển thị lỗi khi gỡ lỗi là đúng và nhật ký lỗi khi gỡ lỗi là sai. PHP có số lượng các lớp ngoại lệ và việc xử lý ngoại lệ được xây dựng trong sẽ nắm bắt bất kỳ ngoại lệ chưa được thực hiện nào và hiển thị một trang hữu ích.

Cấu hình lỗi và ngoại lệ

Lỗi và ngoại lệ có thể được cấu hình trong tập tin cấu hình \ app.php . Xử lý lỗi chấp nhận một vài tùy chọn cho phép bạn điều chỉnh xử lý lỗi cho ứng dụng của mình.

Tùy chọnLoại dữ liệuSự miêu tả
errorLevelintMức độ lỗi bạn quan tâm trong việc chụp.Sử dụng hằng số lỗi dựng sẵn của php và bitmask để chọn mức độ lỗi mà bạn quan tâm.
dấu vếtboolBao gồm dấu vết ngăn xếp cho các lỗi trong tệp nhật ký. Dấu vết ngăn xếp sẽ được bao gồm trong nhật ký sau mỗi lỗi.Điều này rất hữu ích cho việc tìm nơi / khi lỗi được nâng lên.
exceptionRendererchuỗiLớp chịu trách nhiệm cho việc hiển thị các ngoại lệ chưa được nắm bắt. Nếu bạn chọn một lớp tùy chỉnh , bạn nên đặt tệp cho lớp đó trong src / Error . Lớp này cần triển khai thực hiện phương thức render () .
nhật kýboolKhi đúng, ngoại lệ + dấu vết ngăn xếp của chúng sẽ được ghi vào Cake \ Log \ Log .
skipLogmảngMột mảng các tên lớp ngoại lệ không nên được ghi lại. Điều này rất hữu ích để loại bỏ NotFoundExceptions hoặc các thông điệp nhật ký phổ biến nhưng không thú vị khác.
extraFatalErrorMemoryintĐặt số lượng megabyte để tăng giới hạn bộ nhớ khi gặp lỗi nghiêm trọng. Điều này cho phép phòng thở hoàn thành việc ghi nhật ký hoặc xử lý lỗi.

Thí dụ

Thực hiện các thay đổi trong tệp config / routes.php như trong đoạn mã sau.

config / 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();
Tạo tập tin ExpsController.php tại src / Controller / ExpsController.php. Sao chép mã sau trong tệp bộ điều khiển.
==> Phần mềm lập trình PHP chuyên nghiệp.

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();
         }
      }
   }
?>
Tạo một thư mục Exps tại src / Template và dưới thư mục đó tạo một tập tin View được gọi là index.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Exps / index.ctp

This is CakePHP tutorial and this is an example of Passed arguments.
Argument-1: <?=$argument1?>
Argument-2: <?=$argument2?>
Thực hiện ví dụ trên bằng cách truy cập URL sau.

http: // localhost: 85 / PHP / exception / 5/0

Đầu ra

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Phần mềm lập trình PHP chuyên nghiệp
Phần mềm lập trình PHP chuyên nghiệp

Không có nhận xét nào:

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...