codecamp

CakePHP的错误和异常处理

为使系统平稳的运行,系统一旦出现故障就必须被有效的处理掉。CakePHP默认附带错误捕获功能,当错误发生的时候,就会打印并记录这些错误。这个错误捕获程序也被用来捕获异常,当debug为true的时候显示错误,当debug为false的时候记录错误。CakePHP拥有数量庞大的异常类和内置的异常处理程序,会捕获任何异常并显示一个带有有用信息的页面。

错误和异常配置

错误和异常可以在config\app.php文件中进行配置。以下选项可以让让您定制应用程序的错误处理程序-

选项数据类型描述
errorLevelint

要捕获的错误级别

使用内置的PHP错误常量和位掩码来选择你要捕获的错误的级别。

tracebool

是否在日志文件中为错误包含堆栈跟踪

堆栈跟踪将包含在日志中的每个错误后,有助于查找错误在何时何处发生。

exceptionRendererstring

该类负责呈现未捕获的异常

如果您选择自定义类,你应该把该类的文件放到src/Error目录下。这个类需要实现一个render()方法。

logbool

如果为true,异常+它们的堆栈跟踪将被记录到Cake\Log\Log文件中 。

skipLogarray

一个存储不需要记录的异常类名的数组

对过滤NotFoundExceptions或其他常见的,但不感兴趣的日志非常有用。

extraFatalErrorMemoryint

为致命错误发生时设置一个值(MB)来增加内存。以保证可以完成日志记录或错误处理。

修改config/routes.php文件如下。

config/routes.php文件

<?php
   use CakeCorePlugin;
   use CakeRoutingRouteBuilder;
   use CakeRoutingRouter;

   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();

src/Controller/目录下创建ExpsController.php文件。复制以下代码代码至其中。

src/Controller/ExpsController.php

<?php
   namespace AppController;
   use AppControllerAppController;
   use CakeCoreExceptionException;

   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();
         }
      }
   }
?>

src/Template目录下创建一个名为Exps目录,并在此Exps下创建一个名为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?>

通过访问以下网址执行上面的例子。

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

输出

执行以上程序,您会看到如下页面。



CakePHP的服务
CakePHP的日志记录
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

CakePHP Useful Resources

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }