IT编程PHPPHP的学习

6,PHP异常

2016-11-10  本文已影响73人  陈钢镚学财

首先


先说说我对php异常处理的理解:

PHP 异常处理.png
<?php
    function inverse($x) {
        if (!$x) {
                throw new Exception('Division by zero.');
        }else{
            return 1/$x;
        }
    }

    try {
            echo inverse(5) . " ";
            echo inverse(0) . " ";
    } catch (Exception $e) {
            echo 'Caught exception: ',  $e->getMessage(), " ";
    }
?>

从上述的代码中,可以看出,php的异常处理,都需要依靠开发者自己进行分支判断来决定是否抛出一个异常。
(ps:我并没有从网上的资料中找到,php的异常能像java那样自动捕获并抛出。)

问题


  1. 既然PHP的异常基于if来判断,那在if之中,抛出异常的语句完全可以换成处理异常的流程,何必要先抛出,又捕获呢?
  2. 做php开发至今,参与大大小小的项目不下十个,为什么从未遇见过要使用异常机制的?
  3. 综上所述,php所提供的异常处理,又有什么用呢?

于是,如题,我真的不知道PHP的异常处理,有着怎样的意义,怎样的应用场景。
然而,我一再提醒自己,一切东西的存在,都是经过市场考验的,有它存在的价值。

既然资料找不到结果,那就看项目吧


public function Send() {
    try {
      if(!$this->PreSend()) return false;
      return $this->PostSend();
    } catch (phpmailerException $e) {
      $this->SetError($e->getMessage());
      if ($this->exceptions) {
        throw $e;
      }
      return false;
    }
  }

这是从PHPmailer里面摘出来的一段。
其异常抛出的步骤,在PreSend,PostSend这两个方法中。
实际上,这两个方法之中,同样可以有自己的try...catch,形成嵌套。

那么,拿异常机制和前文所说的不抛出异常,直接处理异常的做法做一个对比吧

结语

异常处理在平时开发中或许用到的次数比较少,所以并没有那么深入人心。但是,一切经历市场考核的东西,一定会有其存在的价值。我应该坚定信念去学习,探索。
对于异常处理,我始终觉得自己了解的还不够透彻。非常欢迎大牛们可以给以斧正。

本文出自半醒的狐狸博客

上一篇下一篇

猜你喜欢

热点阅读