解析PHP中Exception异常机制

admin3年前PHP教程58
异常的基本使用

当异常被抛出时,其后的代码不会继续执行,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, throw 和 catch

要避免上面例子出现的错误,我们需要创建适当的代码来处理异常。
正确的处理程序应当包括:
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”的原则,可以设置一个顶层的异常处理器来处理漏掉的错误。

到此这篇关于解析PHP中Exception异常机制的文章就介绍到这了,更多相关PHP中Exception异常内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

远程连接GPU服务器上的jupyter notebook韩国gpu服务器使用教程

远程连接GPU服务器上的jupyternotebook?涉及到需要在自己的笔记本上远程连接服务器上的jupyternotebook来使用GPU服务器上的算力。以下分为单用户和多用户的解决方案。单用户就...

境外站群服务器有哪些

目前服务器的种类主要分为云服务器,CN2服务器,高防服务器,站群服务器等。站群服务器是一个比较特殊的产品,它可以提供大量独立的ip,更利于seo优化。站群服务器可以分为国内站群服务器以及境外站群服务器...

韩国站群服务器原生IP如何辨别?韩国多ip服务器购买需要注意哪些事项?

不少客户在购买韩国站群服务器时会咨询是否原生ip,因为某些特定运用会严格限制ip,例如做外贸电子商务的客户,如果是原生ip就比较好注册和使用体验。依据ip可以和地理位置信息绑定的特性,可以可以分为原生...

合法合规稳定的海外跨境直播网络-直播快

据海关统计,中国跨境电商进出口5年增长近10倍,2021年规模就达到了1.92万亿元人民币,增长18.6%。根据天眼查数据显示,截至目前,我国有超60万家跨境电商,其中跨境直播爆发式增长,直播类APP...

哪些业务网站适合选择日本服务器进行搭建

哪些业务网站适合选择日本服务器进行搭建?日本服务器可以适用于许多不同的业务网站,下面是一些适合选择日本服务器进行搭建的业务网站类型:游戏类网站:日本是一个游戏文化非常发达的国家,因此如果您是一名游戏开...

thinkphp的钩子的两种配置和两种调用方法

thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十...