PHP中Exception异常的基本使用是怎样
Admin 2022-05-19 群英技术资讯 574 次浏览
当异常被抛出时,其后的代码不会继续执行,PHP 会尝试查找匹配的 "catch" 代码块。
如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 "Uncaught Exception" (未捕获异常)的错误消息。
让我们尝试抛出一个异常,同时不去捕获它:
<?php //create function with an exception function checkNum($number) { if($number>1) { throw new Exception("Value must be 1 or below"); } return true; } //trigger exception checkNum(2); ?>
上面的代码会获得类似这样的一个错误:
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 Stack trace: #0 /home/wangkongming/babytree/test/php/php_ob/3.php(12): checkNum(2) #1 {main} thrown in /home/wangkongming/babytree/test/php/php_ob/3.php on line 7
要避免上面例子出现的错误,我们需要创建适当的代码来处理异常。
正确的处理程序应当包括:
Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
Throw - 这里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"
Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象
让我们触发一个异常:
<?php //create function with an exception function checkNum($number) { if($number>1) { throw new Exception("Value must be 1 or below"); } return true; } //trigger exception try{ checkNum(2); echo "If you see this ,the number is 1 or below"; }catch(Exception $e) { echo 'Message: '.$e -> getMessage(); } ?>
运行上面的代码:
Message: Value must be 1 or below
上面的代码抛出了一个异常,并捕获了它:
创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个异常。
在 "try" 代码块中调用 checkNum() 函数。
checkNum() 函数中的异常被抛出
"catch" 代码块接收到该异常,并创建一个包含异常信息的对象 ($e)。
通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息
不过,为了遵循“每个 throw 必须对应一个 catch”的原则,可以设置一个顶层的异常处理器来处理漏掉的错误。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Ajax+PHP实现的分类列表框功能,涉及php结合ajax交互查询数据库与列表框构建相关操作技巧,需要的朋友可以参考下
一、简介自PHP5起完全重写了对象模型以得到更佳性能和更多特性。这是自PHP4以来的最大变化。PHP5具有完整的对象模型。PHP5中的新特性包括访问控制,抽象类和 ...
文本主要给大家分享的是关于php依赖注入容器的内容,对于新手来说依赖注入容器可能比较难理解,文本有对依赖注入容器理解以及具体代码,有这方面学习需要的朋友可以参考参考。下面我们一起来了解一下。
这篇文章主要介绍了PHP实现15位身份证号转18位的方法,结合实例形式分析了15位身份证号转18位的相关原理与php实现技巧,需要的朋友可以参考下
这篇文章主要给大家介绍了关于Laravel使用swoole实现websocket主动消息推送的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008