- CakePHP 教程
- CakePHP - 主页
- CakePHP - 概述
- CakePHP - 安装
- CakePHP - 文件夹结构
- CakePHP - 项目配置
- CakePHP - 路由
- CakePHP - 控制器
- CakePHP - 视图
- CakePHP - 扩展视图
- CakePHP - 查看元素
- CakePHP - 查看活动
- CakePHP - 使用数据库
- CakePHP - 查看记录
- CakePHP - 更新记录
- CakePHP - 删除一条记录
- CakePHP - 服务
- CakePHP - 错误和异常处理
- CakePHP - 日志记录
- CakePHP - 表单处理
- CakePHP - 国际化
- CakePHP - 会话管理
- CakePHP - Cookie 管理
- CakePHP - 安全性
- CakePHP - 验证
- CakePHP - 创建验证器
- CakePHP - 分页
- CakePHP - 日期和时间
- CakePHP - 文件上传
- CakePHP 有用资源
- CakePHP - 快速指南
- CakePHP - 有用的资源
- CakePHP - 讨论
CakePHP - 错误和异常处理
为了保证系统的顺利运行,需要对系统故障进行有效的处理。CakePHP 带有默认的错误捕获,当发生错误时打印并记录错误。同样的错误处理程序用于捕获异常。
当 debug 为 true 时,错误处理程序显示错误;当 debug 为 false 时,错误处理程序记录错误。CakePHP 有许多异常类,内置的异常处理将捕获任何未捕获的异常并呈现有用的页面。
错误和异常配置
错误和异常可以在文件config\app.php中配置。错误处理接受一些选项,允许您为您的应用程序定制错误处理 -
选项 | 数据类型 | 描述 |
---|---|---|
错误级别 | 整数 | 您有兴趣捕获的错误级别。使用内置的 php 错误常量和位掩码来选择您感兴趣的错误级别。 |
痕迹 | 布尔值 | 在日志文件中包含错误的堆栈跟踪。每次错误后,堆栈跟踪将包含在日志中。这有助于查找发生错误的位置/时间。 |
异常渲染器 | 细绳 | 负责呈现未捕获异常的类。如果您选择自定义类,则应将该类的文件放置在src/Error中。这个类需要实现一个render()方法。 |
日志 | 布尔值 | 当 true 时,异常及其堆栈跟踪将被记录到Cake\Log\Log。 |
跳过日志 | 大批 | 不应记录的异常类名称数组。这对于删除NotFoundExceptions或其他常见但无趣的日志消息非常有用。 |
额外的致命错误内存 | 整数 | 设置为遇到致命错误时增加内存限制的兆字节数。这允许有喘息的空间来完成日志记录或错误处理。 |
例子
在config/routes.php文件中进行更改,如以下代码所示。
配置/routes.php
<?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(); });
在 src/Controller/ExpsController.php创建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(); } } } ?>
在src/Template处创建一个目录Exps,并在该目录下创建一个名为 index.php 的视图文件。将以下代码复制到该文件中。
src/模板/Exps/index.php
This is CakePHP tutorial and this is an example of Passed arguments.
Argument-1: <?=$argument1?><br/> Argument-2: <?=$argument2?><br/>
通过访问以下 URL 来执行上述示例。
http://localhost/cakephp4/异常/5/0
输出
执行后,您将收到以下输出。