• 售前

  • 售后

热门帖子
入门百科

剖析PHP中Exception非常机制

[复制链接]
当当当当裤裆坦 显示全部楼层 发表于 2021-8-14 15:04:04 |阅读模式 打印 上一主题 下一主题
非常的根本利用

当非常被抛出时,其后的代码不会继承实行,PHP 会实验查找匹配的 "catch" 代码块。
假如非常没有被捕获,而且又没用利用 set_exception_handler() 作相应的处理的话,那么将发生一个严峻的错误(致命错误),而且输出 "Uncaught Exception" (未捕获非常)的错误消息。
让我们实验抛出一个非常,同时不去捕获它:
  1. <?php
  2. //create function with an exception
  3. function checkNum($number)
  4. {
  5. if($number>1)
  6.   {
  7.   throw new Exception("Value must be 1 or below");
  8.   }
  9. return true;
  10. }
  11. //trigger exception
  12. checkNum(2);
  13. ?>
复制代码
上面的代码会得到雷同这样的一个错误:
  1. PHP Fatal error:  Uncaught exception 'Exception' with message 'Value must be 1 or below' in /home/wangkongming/babytree/test/php/php_ob/3.php:7
  2. Stack trace:
  3. #0 /home/wangkongming/babytree/test/php/php_ob/3.php(12): checkNum(2)
  4. #1 {main}
  5.   thrown in /home/wangkongming/babytree/test/php/php_ob/3.php on line 7
复制代码
Try, throw 和 catch

要制止上面例子出现的错误,我们须要创建得当的代码来处理非常。
正确的处理步调应当包括:
Try - 利用非常的函数应该位于 "try" 代码块内。假如没有触发非常,则代码将照常继承实行。但是假如非常被触发,会抛出一个非常。
Throw - 这里规定怎样触发非常。每一个 "throw" 必须对应至少一个 "catch"
Catch - "catch" 代码块会捕获非常,并创建一个包含非常信息的对象
让我们触发一个非常:
  1. <?php
  2. //create function with an exception
  3. function checkNum($number)
  4. {   
  5. if($number>1)
  6.   {  
  7.       throw new Exception("Value must be 1 or below");
  8.   }  
  9. return true;
  10. }   
  11.      
  12. //trigger exception                                                                                                      
  13. try{
  14.     checkNum(2);
  15.     echo "If you see this ,the number is 1 or below";
  16. }catch(Exception $e) {
  17.     echo 'Message: '.$e -> getMessage();
  18. }
  19. ?>
复制代码
运行上面的代码:
  1. Message: Value must be 1 or below
复制代码
例子解释:

上面的代码抛出了一个非常,并捕获了它:
创建 checkNum() 函数。它检测数字是否大于 1。假如是,则抛出一个非常。
在 "try" 代码块中调用 checkNum() 函数。
checkNum() 函数中的非常被抛出
"catch" 代码块吸收到该非常,并创建一个包含非常信息的对象 ($e)。
通过从这个 exception 对象调用 $e->getMessage(),输出来自该非常的错误消息
不外,为了遵循“每个 throw 必须对应一个 catch”的原则,可以设置一个顶层的非常处理器来处理遗漏的错误。
到此这篇关于解析PHP中Exception非常机制的文章就介绍到这了,更多相干PHP中Exception非常内容请搜索脚本之家以前的文章或继承浏览下面的相干文章渴望各人以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作