PHP中try{}catch{}语句概述

1.PHP5添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。(注:一定要先抛才能获取)

2.需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。

3.每一个 try 至少要有一个与之对应的 catch。

4.使用多个 catch可以捕获不同的类所产生的异常。

5.当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。

6.当然,PHP允许在 catch 代码块内再次抛出(throw)异常。

7.当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch。

8.如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息。

手动抛出和捕获异常

// 使用think自带异常类抛出异常

throw new \think\Exception('异常消息', 10006);

助手函数简化异常的代码

// 使用助手函数抛出异常

exception('异常消息', 10006);

如果需要抛出自定义异常,可以使用:

// 抛出自定义异常

exception('异常消息', 10006,'\app\common\exception\NotFoundException');

手动捕获异常方式是使用try-catch,例如:

try {// 这里是主体代码
} catch (ValidateException $e) { // 这是进行验证异常捕获 return json($e->getError()); } catch (\Exception $e) { // 这是进行异常捕获 return json($e->getMessage()); }可以使用PHP的异常捕获进行必要的处理,但需要注意一点,在异常捕获中不要使用think\Controller类的error、success和redirect方法,因为上述三个方法会抛出HttpResponseException异常,从而影响正常的异常捕获,例如:
try{Db::name('user')->find(); $this->success('执行成功!'); }catch(\Exception $e){ $this->error('执行错误'); }应该改成
try{Db::name('user')->find(); }catch(\Exception $e){ $this->error('执行错误'); } $this->success('执行成功!');

 


 
 

转载于:https://www.cnblogs.com/liuwei1/p/10585230.html

2019.3.23 捕获异常相关推荐

  1. 2019/2/23研究日志

    今天我们进行了第一次实践操作. 由于直接制作一个磁悬浮电子器件对于初步接触电子电工的我们来说要求太高,我们觉得循序渐进,经过试验和经验积累,逐步掌握电子电工知识,才有可能完成磁悬浮的设计和尝试制作.于 ...

  2. 训练日志 2019.1.23

    好几天没写训练日记了... 最近几天题出的不多,大部分时间都在补题... 今天做了两道模版题,一道最大团的,现学的 Bron-Kerbosch 算法,一道树形 DP 的题,最后时间不够了没交上... ...

  3. 【STM32CubeMx】学习记录(基于微雪教程)(2019/2/16——2019/2/23完结)

    教程学习网址:http://www.waveshare.net/study/article-666-1.html 2019/2/16 STM32CubeMx系列教程 1-3 2019/2/17 STM ...

  4. 香港大学MSc面试经验分享 | 2019.2.23北京场

    香港大学MSc面试经验分享 | 2019.2.23北京场 在经历了两次香港大学early admission之后(没错,这次已经是第三次面试了),终于在mainround面试之后收到了推研信,心中一块 ...

  5. PAT题集2019.5.23排名变动

    2019.5.23 团体天梯集 用户昵称 排名变动 总分变动 JS 112 -> 80 1711 -> 1765 Six 171 -> 106 1611 -> 1726 Dea ...

  6. “构建全球科技创新生态科技思想家”王煜全如是说(2019.4.23清水湾思享会第13期嘉宾)...

    内容来源: 2019年4月23日,主题为"人工智能与未来科技"的香港科大"清水湾"思享会[第13期]隆重举办,海银资本创始合伙人.著名科技投资人王煜全先生做了主 ...

  7. Unity3d 周分享(13期 2019.3.23 )

    选自过去1~2周 自己所看到外文内容:https://twitter.com/unity3d 和各种其他博客来源吧 csdn 的东西, 不想吐槽, 笔记的拷贝  还需要重新传图片,  代码排版等问题, ...

  8. 美通社企业新闻汇总 | 2019.1.23 | 上海迪士尼建疯狂动物城园区;戴森运营总部移至新加坡...

    要闻 埃森哲:中国员工对企业采集个人数据持更开放态度 戴森运营总部将从英国移至新加坡 上海迪士尼将建疯狂动物城主题园区 默克与腾讯就中国智能数字医疗服务展开合作 中联重科打造的全球最大塔机智能工厂开园 ...

  9. 第二代机器人操作系统课程资料汇总 Course Learning Materials for ROS2 2019.10.23

    ROS2全部课程资料专栏:https://blog.csdn.net/zhangrelay/article/category/9327597 ROS2开发最新动态资讯:https://blog.csd ...

最新文章

  1. J2ME游戏开发中时钟的简单实现
  2. oracle取出对应时间间隔内的数据 between-and
  3. linux-任务调度
  4. python的函数_Python 返回函数+匿名函数
  5. VLAN学习笔记大全(1)
  6. ssis面试题_SSIS面试问题
  7. 禁止root用户远程登录或者禁止其他用户登录而不删除它
  8. android通用对话框,android-所有活动中的“通用”对话框
  9. python flask文件下载 | 实用代码架构
  10. GMT、UTC、DST、CST时区代表的意义
  11. SpringBoot——检索
  12. Python基础笔记_Day10_Python面向对象、类和对象、__init__、__str__、访问限制、set、get
  13. Unity-Graphic绘制菱形Rhombus
  14. 智慧旅游 SaaS 平台:票付通 CRM 建设之路(深度文)
  15. uniapp实现滚动到底部加载更多数据
  16. bit、byte、位、字节、汉字的关系
  17. Qt error: /usr/bin/ld: cannot find -lGL: No such file or directory
  18. 重新启动mysql服务器
  19. Latex 常用括号类表达式
  20. Day212.OAuth2、微信二维码登入注册功能、用户登录信息前后端供、讲师列表前后端 -谷粒学院

热门文章

  1. 数据结构-- 线性表之链式存储
  2. java请求servlet,[Java]Servlet发送Post请求
  3. Linux C目标文件
  4. 嵩天python爬虫_我自己爬-python爬虫快速入门(一)
  5. 【Pytorch神经网络基础理论篇】 05 矩阵计算
  6. TypeError: object of type 'zip' has no len()、'zip' object is not subscriptable
  7. LeetCode 1726. 同积元组(排列组合)
  8. LeetCode MySQL 1322. 广告效果
  9. LeetCode 1474. 删除链表 M 个节点之后的 N 个节点
  10. LeetCode 1318. 或运算的最小翻转次数(位运算)