SuperAPI AI 工具集

bitrix-result-and-errors

编程与开发

查看项目

更新于 10-15 17:30

技能介绍

用途:在 Bitrix 主模块 23.0+(已验证 26.800.0)中统一错误处理契约。可预期失败(校验、业务规则、未找到、无权限)返回带 Errors 的 Result;损坏状态或契约破坏(模块缺失、数据库不可用、配置错误、缺陷)抛异常。一个方法一个契约:要么始终返回 Result,要么返回值并对例外情况抛异常,不用 bool/null/-1/['error'=>…]。

主要能力:Bitrix\Main\Result 提供 isSuccess()、addError(Error)、addErrors(Error[])、getErrors()、getError()、getErrorMessages()、getErrorCollection()、setData(array)、getData(),setter 返回 $this;setData() 会静默丢弃 SqlExpression 值。Error 构造为 new Error($message, $code = 0, $customData = null),JSON 形式为 message/code/customData;错误码稳定可机器读取,建议用“模块+实体+原因”常量,客户端按 code 分支,消息经 Loc::getMessage() 获取。ErrorCollection 支持构造、setError()、add()、getErrorByCode()、迭代、isEmpty()、toArray()。可通过继承 Result 定义类型化结果并暴露 getter,替代 getData()['post']。

ORM 结果:AddResult 有 getId()、getPrimary()、getObject();UpdateResult 有 getId()、getPrimary()、getAffectedRowsCount();DeleteResult 无自身方法。ORM\Data*Result 是正式写法,Entity*Result 为兼容别名。失败的 ORM 结果若无人读取 isSuccess()/getErrors(),析构时会触发 E_USER_WARNING,需检查并返回或上抛其错误。EventResult 是事件处理器的应答而非服务结果;ValidationResult 继承 Result,可把其错误并入服务结果。控制器中通过 $this->addErrors($result->getErrors()); return null; 返回 {"status":"error","data":null,"errors":[…]}。在模块或控制器边界用 try/catch 捕获 SystemException,记录日志并返回通用错误,不可静默吞掉 Throwable。开发者错误与“不可能发生”的领域状态仍用异常。

适用场景:Bitrix 模块服务层、ORM 增删改查、控制器接口与验证组件的错误编排。限制:具体版本行为以所用主模块版本为准;资料未提供安装步骤、收费与平台信息。