欢迎访问 如意编程网!

如意编程网

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

2019.3.23 捕获异常

发布时间:2024/7/5 编程问答 4 豆豆
如意编程网 收集整理的这篇文章主要介绍了 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

总结

以上是如意编程网为你收集整理的2019.3.23 捕获异常的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得如意编程网网站内容还不错,欢迎将如意编程网推荐给好友。