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

时间: 2024-07-29 17:14:10

2019.3.23 捕获异常的相关文章

PAT 甲级 A1054 (2019/02/23)

1 #include<cstdio> 2 #include<map> 3 using namespace std; 4 int main(){ 5 int m, n, element; 6 scanf("%d %d", &m, &n); // 行数与列数 7 map<int, int> Count; // 数字与出现次数的map映射 8 for(int i = 0; i < m; i++){ 9 for(int j = 0; j

2019第23周日

端午遇上高考,1031万考生奔赴考场,背后有上亿个关心加油的人.护航2019高考,6月7日至9日,全国举行2019年高考.高考首日,北京试卷从各区的教育招生和考试中心运送至考点,全程GPS跟踪和移动视频监控,确保试卷保密性. 高考能改变人的一生,但高考不能决定人的一生. 一个远程接口调用服务要保存服务地址信息,同时要处理地址的立即更新,这里会存在同步问题,根据同步代码执行时间要确定同步方法,是否用读写锁,是否用读写互斥的读写锁.Java中大部分锁.同步工具都是基于AQS实现的,它又是基于通过JN

2019/09/23,差不多吊先生

我搞着差不多吊的拽,又过了差不多的一天. 时间差不多的紧,我花着差不多的$0. 桶面差不多的懒,做人差不多的贱. 活得差不多吊的边缘,又是差不多吊的一天. 一个差不多的加州,有着差不多的弱智. 差不多的黑人白人,反正一律脸盲. 看着差不多的网恋,吃着差不多的狗粮. 敲着差不多的英文,发着差不多的hello. 差不多的熬夜,又喝着差不多的冰阔落. 汀着差不多的锅,哼着差不多的吊. 有着差不多吊的希望,天天差不多地梦几下. 差不多的垃圾衣服,脑袋差不多的矛盾. 差不多的懒狗,都做着差不多的梦. 时间

2019.1.23 DFMEA for

原文地址:https://www.cnblogs.com/huangbaobaoi/p/10315330.html

梦想Android版CAD控件2019.01.23更新

下载地址:http://www.mxdraw.com/ndetail_10121.html?tdsourcetag=s_pcqq_aiomsg1. 增加异步读取CAD,DWG文件函数,MxFunction.asyncOpenFile,asyncOpenBufferFile,setAsyncMode2. 增加连续绘制PL线例子和在绘制过程退出当前命令的按钮3. 增加CAD对象缩放,移动,旋转变换函数4. 修正点显示问题5. 增加夹点编辑,触发事件6. 修改扩展数据,扩展字典中的中文名保存失败问题7

开班前自学—python基础一 2019.02.23

一.学习期间要求 1.不允许迟到.(每次迟到罚20,扣5分) 2.不允许楼道内吸烟,不乱扔杂物. 3.尊重老师们.(老师包括主教/上课老师...) 4.听话 二.初识计算机 三 python的发展 Python 2x vs Python 3x 1.3x:源码规范,'优雅','明确','简单'.2x相反,2020. 2.3x:默认utf-8编码:2x:默认ascii编码.sacii码无法显示中文. 2x修改默认编码: # -*- encoding : utf-8 -*- 四 编译语言的分类 1.

PAT 甲级 A1016 (2019/02/23)0/25

#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 1010; int toll[25]; struct Record { char name[25]; int month, dd, hh, mm; bool status; } rec[maxn], temp; bool cmp(Record a, Record b) { int

2019.03.23 Http

自己也要分清楚  看清楚 request,response 一个是请求  一个是相应 行 头    之间还有个空行    体 HttpRequest请求对象(只读) 当用户访问一个视图函数时,Django会创建一个request对象(HttpRequest) HttpRequest对象中封装了所有的Http协议中的请求信息 常见属性和方法 HttpRequest.scheme:返回协议类型(http/https)HttpRequest.body:返回请求实体内容HttpRequest.path:

如何查看JDK_API 2019.2.23

API(Application Programming interface) 应用程序接(帮助文档) F:\BaiduNetdiskDownload\霸宝 使用:1.打开帮助文档 2.点击显示,找到索引,看到输入框 3.想看什么搜什么 4.看类的描述.构造方法.成员方法 原文地址:https://www.cnblogs.com/cxqbk/p/10424774.html