企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] RapPHP 对异常进行了合理的显示 ### 1. MsgException 对于 MsgException 我们正常认为是需要显示给用户的正常的提示星系 #### 1.1非浏览器环境或Ajax请求显示 ![](https://box.kancloud.cn/550d05e3f0eff7059837a6299bffa8dd_694x296.png) #### 1.2浏览器直接访问 如果是浏览器直接访问,不是通过ajax请求 ![](https://box.kancloud.cn/301d7a613b555868482abc3f09b38141_1472x930.png) ### 2. 其他异常 其他异常我们认为是程序内部错误 #### 2.1非浏览器环境或Ajax请求显示 ![](https://box.kancloud.cn/9fe4bad1202fc17cfd8fb48f2be83974_668x200.png) #### 2.2浏览器环境 ##### 2.2.1 debug=true 时 返回结果是 页面 的情况,会在页面中显示错误代码和调用栈 ![](https://box.kancloud.cn/b697f0138bd1a9ee90b66226f24a4edc_1868x1360.png) ![](https://box.kancloud.cn/f20ee245b3b8e4e1c41b6ce98e6e038a_1816x456.png) ##### 2.2.2 debug=false 时 ![](https://box.kancloud.cn/301d7a613b555868482abc3f09b38141_1472x930.png) ### 3. 自定义错误页面 在浏览器直接访问的情况下,我们默认的显示页面是很丑的 你可以自定义错误页面 我们会找项目根目录下的 template/exception.html 文件是否存在 然后替换里面的`{{msg}}`和 `{{code}}` ### 4.自定义全局异常处理 * * * * * 我们对所有异常包括MsgException和其他Exception都会进行统一处理,处理类为 ApiExceptionHandler::class(处理返回结果是 json 的)和PageExceptionHandler::class(处理返回结果是网页的) 如果你想自己自定义处理全局异常你可以继承ApiExceptionHandler或PageExceptionHandler 如你写个类 ~~~ class MyExceptionHandler extends ApiExceptionHandler{} ~~~ 然后在 IOC 里注册就可以了 如 ~~~ class AppInit implements Init{ public function appInit(AutoFindHandlerMapping $autoMapping, Router $router){ //绑定ApiExceptionHandler为MyExceptionHandler Ioc::bind(ApiExceptionHandler::class,MyExceptionHandler::class); } } ~~~