2019.3.23 捕获异常

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1480 一维数组的动态和

题目: 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 示例 1: 输入:nums [1,2,3,4] 输出:[1,3,6,10] 解释:动态和计算过程为 [1,…

推荐系统简介

推荐系统简介 文章目录推荐系统简介1.推荐系统概述推荐系统目的我们推荐的目的:推荐系统的应用推荐系统的基本思想推荐系统的数据分析推荐系统分类2.推荐系统简介基于人口统计学的推荐基于内容的推荐基于协同过滤的推荐混合推荐3.推荐系统评测推荐系统的实验方法推荐…

清华大学孙茂松:透过喧嚣,坐看云起,NLP 的迷思与感悟

来源:智源社区图源:澎湃新闻2010年深层神经网络在语音识别研究方向上取得里程碑式进展,以这一事件为新起点和新动能,整个人工智能领域迅速跃迁到深度学习时代,包括自然语言处理(NLP)等关键领域也…

华为OD机试 - 贪吃的猴子(Java JS Python C)

在线OJ刷题 题目详情 - 贪吃的猴子 - Hydro 题目描述 一只贪吃的猴子,来到一个果园,发现许多串香蕉排成一行,每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。 猴子获取香蕉,每次都只能从行的开头或者末尾获取,并且只能获取N次,求猴子最多能获取多少根香蕉…

软工大二下半年第四周学习进度

这一周,并没有什么收获,不过令我感到兴奋地是,HTML竟然可以做小游戏,我去网上搜简单小游戏的源代码,坦克大战,俄罗斯方块,五子棋童年的回忆,没想到自己可以做出来。还有一些程序员表…

2022年科学突破奖,9人共获奖金1500万美元,mRNA 新冠疫苗2位奠基人获奖

来源:科研圈编辑:David9 月 9 日,2022 年科学突破奖获奖名单在美国旧金山公布。生命科学奖、物理学奖、数学奖分别授予 5 个项目共 9 位科学家,每个项目奖金金额为 300 万元。新冠 mRNA 疫苗技术奠基者 Katalin Karik 与 Drew Wei…

Linux C语言 文件操作

打开函数 fopen 的原型如下。 FILE * fopen(char *filename, char *mode); 返回值:打开成功,返回该文件对应的 FILE 类型的指针;打开失败,返回 NULL。 表 2模式含 义说 明r只读文件必须存在,否则打开失败w只写若文件存…

多巴胺如何驱使我们克服复杂情况、逆境、情绪, 让我们掌控周遭的环境的

来源:本文摘自《贪婪的多巴胺》仅仅是“想要”很少能让你得到任何东西。你必须弄清楚如何获得它,以及它是否值得拥有。事实上,如果我们做事时不考虑怎么做和下一步做什么,失败甚至不是最坏的结果。结果可能从吃得有点儿多发展为不…

火爆股市的元宇宙,究竟关VR/AR什么事?

来源:VR每日必看VR设备被普遍认为是进出元宇宙的主要终端,据Wind数据,VR概念的上市公司包括歌尔股份、中科创达、欣旺达等55家公司。大洋彼岸的“蝴蝶”扇动翅膀,A股的元宇宙概念也火热起来。A股代表性企业中青宝已经连续两日“20…

2018-2019-2 网络对抗技术 20165301 Exp2 后门原理与实践

2018-2019-2 网络对抗技术 20165301 Exp2 后门原理与实践 实验内容 (1)使用netcat获取主机操作Shell,cron启动(2)使用socat获取主机操作Shell, 任务计划启动(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送…

[Swift]LeetCode853. 车队 | Car Fleet

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址&a…

世界机器人大会|人工智能VS人类

来源:新华社作者:北京邮电大学人工智能学院 刘伟配音:郑琬策划、终审:刘君校对:周雪晴2021世界机器人大会于9月10日至13日在北京召开,世界机器人博览会及世界机器人大赛将同期举办。其实,智能不…

LeetCode LCP 06. 拿硬币

题目:桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。 示例 1: 输入:[4,2,1]输出:4解释:第一…

华为:憧憬6G,共同定义6G

来源:华为华为心声社区发布了由徐直军签发的总裁办电子邮件,邮件内容为徐直军为《6G无线通信新征程》一书作的序《憧憬6G,共同定义6G》。徐直军在文中表示,6G将在2030年左右投向市场,究竟市场将会迎来什么样的6G&#…

增量式爬虫(简易)

增量式爬虫引言: 当我们在浏览相关网页的时候会发现,某些网站定时会在原有网页数据的基础上更新一批数据,例如某电影网站会实时更新一批最近热门的电影。小说网站会根据作者创作的进度实时更新最新的章节数据等等。那么,类似的情景…

“中国诺奖”2021未来科学大奖公布:袁国勇、裴伟士、张杰、施敏获奖,总奖金300万美元...

来源:学术头条中国首个由科学家、企业家共同发起的民间公益组织颁发的世界级科学大奖——未来科学大奖,9 月 12 日正式揭晓 2021 年生命科学奖、物质科学奖、数学与计算机科学奖获奖名单。香港大学袁国勇、裴伟士获得生命科学奖。获奖理由:他…

实验二——函数重载,快速排序,类对象

函数重载&#xff1a; #include<iostream> using namespace std; struct complex{ double real; double imaginary; }; int add(int,int); double add(double,double); complex add(complex,complex); int main() { int a12,b13; double a22.0,b23.0; struct complex num…

LeetCode 771. 宝石与石头

题目&#xff1a; 给定字符串J 代表石头中宝石的类型&#xff0c;和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型&#xff0c;你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复&#xff0c;J 和 S中的所有字符都是字母。字母区分大小写&#…

Python——类与对象,异常处理

类 1 class C1: 2 def setdata(self,value): 3 self.data value 4 def display(self): 5 print(self.data) 1 class C2(C1): //继承&#xff0c;2 def display(self): 3 print(C2:, self.data)…

【前沿技术】Facebook 硬件负责人,带摄像头的智能眼镜将在 10 年内成为常态

拍照功能将在十年内成为智能眼镜的标准配置来源&#xff1a;智能研究院在 Facebook 与 Luxottica 的首款智能眼镜合作产品 Ray-Ban Stories 发布后&#xff0c;Facebook 硬件业务负责人 Andrew Bosworth 周五在与 Essilor Luxottica 的首席可穿戴设备官 Rocco Basilico 交谈时表…