php自定义捕获异常报错,thinkphp CI

该博客介绍了PHP中自定义异常处理的实现,通过创建`PoscmsModelException`类继承自内置`Exception`类,定义了辅助函数`E()`用于抛出异常。在调用时,使用`try-catch`捕获异常并返回带有错误代码和消息的JSON响应,提高了错误处理的规范性和用户体验。

辅助函数
function E ($msg, $code=0) {
    throw new Poscms\Model\Exception($msg, $code);
}

集成系统异常基类
namespace Poscms\Model;
/**
 * CI框架系统异常基类
 */
class Exception extends \Exception {
    
}
调用方式:

        try {
            E('缺少UID', 200);
        } catch (Exception $exception) {
            ajaxReturn(['code' => $exception->getCode(), 'msg' => $exception->getMessage()]);
        }

ThinkPHP框架中,自定义异常可以通过以下步骤实现: ### 1. 创建自定义异常类 首先需要创建一个自定义异常类,继承自 `think\Exception` 或者 `think\exception\Handle` 相关的异常类。以下是一个简单的自定义异常类示例: ```php <?php namespace app\exception; use think\Exception; class CustomException extends Exception { public function __construct($message = "", $code = 0, Throwable $previous = null) { parent::__construct($message, $code, $previous); } } ``` ### 2. 抛出自定义异常 在业务逻辑中,可以根据具体情况抛出这个自定义异常。例如: ```php <?php namespace app\controller; use app\exception\CustomException; use think\Controller; class Index extends Controller { public function index() { try { // 模拟业务逻辑判断 if (true) { throw new CustomException('这是一个自定义异常信息', 1001); } } catch (CustomException $e) { // 捕获自定义异常 return json([ 'code' => $e->getCode(), 'message' => $e->getMessage() ]); } } } ``` ### 3. 全局异常处理(可选) 可以对全局异常进行统一处理,通过修改 `app\exception\Handle` 类来实现。示例如下: ```php <?php namespace app\exception; use think\exception\Handle; use think\facade\Log; use app\exception\CustomException; class ExceptionHandle extends Handle { public function render(\Exception $e) { if ($e instanceof CustomException) { // 处理自定义异常 return json([ 'code' => $e->getCode(), 'message' => $e->getMessage() ]); } // 其他异常按照默认方式处理 return parent::render($e); } } ``` 通过以上步骤,就可以在ThinkPHP框架中实现自定义异常的功能。自定义异常可以帮助开发者更清晰地处理特定类型的错误,提高代码的可维护性和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值