簡體   English   中英

PHP try catch塊語法

[英]PHP try catch block syntax

一個沒有太多經驗的人提出的一個非常簡單的問題。 以下try catch塊包含“(Exception $ e)”部分:這類似於sql,其中$ e成為Exception的別名? 如果是這樣,這種別名分配類型是否在php的其他地方使用,因為我還沒有遇到過? 我已經搜索了幾個小時,但無法在網上找到解釋。

function inverse($x) {
 if (!$x) {
     throw new Exception('Division by zero.');
          }
            else return 1/$x;
          }

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

            echo 'Hello World';

您提到的是過濾器構造。 它類似於其他聲明性語言中的聲明。 但是實際上它具有不同的含義。 實際上,php沒有顯式聲明的概念(這很可惜...)。

看一下這個例子:

function my_func($x) {
    try {
        /* do something */
        if (1===$x)
            throw new SpecialException('x is 1.');
        else if (is_numeric($x))  }
            throw new SpecialException('x is numeric.');
        else return $x;
    }
    catch (SpecialException $e) {
        echo "This is a special exception!";
        /* do something with object $e of type SpecialException */
    }
    catch (Exception $e) {
        echo "This is a normal exception!";
        /* do something with object $e of type SpecialException */
    }
}

在這里可以清楚知道構造的用途:它按異常類型過濾掉。 因此,可以將執行幾個catch塊中的哪個問題的問題歸結為引發的異常類型。 在需要時,這允許非常精細的異常處理。 沒有這種功能,只有一個catch塊是合法的,並且您必須對每個catch塊中的潛在異常類型實施條件測試。 該功能使代碼更具可讀性,盡管它在php語法中有所突破。

您不必這樣做,但是您可以創建自己的具有特殊行為的異常類,更重要的是,可以接受並攜帶有關實際情況的更多信息。

是OO PHP。 $ e是異常對象的實例。

$ e可以很容易地被標記為其他任何東西,只要您要獲取消息等在它上面被引用即可。

例如;

 try {
        echo inverse(5) . "<br/>";
        echo inverse(0) . "<br/>";
      } catch (Exception $oops) {
        echo 'Caught exception: ',  $oops->getMessage(), "<br/>";
      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM