发布于 1970-01-01 08:00
  • 2 个回答
    • PHP 内置了一个基类 Exception,你需要继承这个类来定义自己的异常。
      当异常被触发时通过 catch 关键字来捕获,进行异常处理。

      catch (MyException $e) {
           //MyException process here...
      }
      

      抛出异常可以这样做:

      $myException = new MyException(/*something here*/);
      throw $myException;
      
      2022-12-01 19:36 回答
    • 关于前段时间,自己提到的一个php中的异常处理机制问题,由于回答者甚少,笔者只好自己广搜网络资源以及大拿的文章(尤其参考PHP核心技术与最佳实践一书),现整理如下,如有错误,欢迎指出:

      在各种语言中,异常和错误的概念其实是不一样的,在PHP中,任何自身错误都会触发一个错误,而不是抛出异常(对于一些情况,会同时抛出异常和错误!)。在这个意义上,如果像使用异常一样去处理一些不可预知的情况,是办不到的。比如,想在数据库连接打不开时触发异常,是不可行的,这在PHP中把他作为错误抛出,而不会作为异常自动捕获。

      经典除零问题:

      try {
      $a = 5 / 0;
      echo $a;
      } catch (Exception $e) {
      echo $e->getMessage();
      $a = 123;
      }
      echo $a;
      

      输出结果是:

      PHP只有你手动throw抛出异常后,才能捕获异常(一般是这样,但也有php异常可以自动捕获)。

      而对于java,它有比较完善的异常处理机制,把一切认为不正常的情况都当作了异常,而PHP却把他们当成了错误,根本原因在于,java里异常是唯一的错误报告方式,而在php中却不是这样。通俗一点就是,这两门语言的设计者对于异常和错误的界定存在分歧,什么是异常,什么是错误,他们的设计者存在不同的观点而已。

      说道异常,就不得不提php中异常的兄弟-----错误。php中错误的处理比异常的价值大得多,而且php提供了比较强大的错误处理函数,详细请自己查阅手则或者网络资源。

      2022-12-01 19:36 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有