PHP 丟擲異常


簡介

Throwable 介面由 Error 和 Exception 類實現。所有預定義的 Error 類都繼承自 Error 類。相應 Error 類的例項在 try 塊內丟擲並在相應的 catch 塊內處理。

丟擲錯誤

正常執行(當 try 塊內沒有丟擲異常時)將在隨後定義的最後一個 catch 塊之後繼續。

示例

 線上演示

<?php
function div($x, $y) {
   if (!$y) {
      throw new Exception('Division by zero.');
   }
return $x/$y;
}
try {
   echo div(10,5) . "
";    echo div(10,0) . "
"; } catch (Exception $e) {    echo 'Caught exception: ', $e->getMessage(), "
"; } // Continue execution echo "Execution continues
"; ?>

輸出

顯示以下輸出

2
Caught exception: Division by zero.
Execution continues

在以下示例中,在執行函式時丟擲 **TypeError**,因為沒有向其傳遞適當的引數。顯示相應的錯誤訊息

示例

 線上演示

<?php
function add(int $num1, int $num2){
   return $num1 + $num2;
}
try {
   $value = add(1, 'one');
} catch (TypeError $e) {
   echo $e->getMessage(). "
"; } ?>

輸出

顯示以下輸出

Argument 2 passed to add() must be of the type integer, string given

SPL 異常

標準 PHP 庫包含預定義的異常

LogicException表示程式邏輯錯誤的異常。
BadFunctionCallException 如果回撥引用未定義的函式或缺少某些引數,則丟擲此異常。
BadMethodCallException 如果回撥引用未定義的方法或缺少某些引數,則丟擲此異常。
DomainException如果值不符合定義的有效資料域,則丟擲此異常。
InvalidArgumentException 如果引數不是預期型別,則丟擲此異常。
LengthException如果長度無效,則丟擲此異常。
OutOfRangeException請求非法索引時丟擲此異常。
RuntimeException如果發生只能在執行時發現的錯誤,則丟擲此異常。
OutOfBoundsException如果值不是有效的鍵,則丟擲此異常。
OverflowException向已滿的容器新增元素時丟擲此異常。
RangeException丟擲此異常以指示程式執行期間的範圍錯誤。除下溢/上溢以外的算術錯誤。
UnderflowException對空容器執行無效操作(例如刪除元素)時丟擲此異常。
UnexpectedValueException 如果值與一組值不匹配,則丟擲此異常。

以下示例顯示當在 PHP 陣列中找不到鍵時丟擲的 **OutOfBoundsException**

示例

 線上演示

<?php
$arr=array("one"=>1, "two"=>2,"three"=>3,"four"=>4);
$key="ten";
try{
   if (array_key_exists($key, $arr)==FALSE){
      throw new OutOfBoundsException("key not found");}
   else {
      echo $arr[$key];}
   }
   catch (OutOfBoundsException $e){
      echo $e->getMessage(). "
"; } ?>

輸出

顯示以下輸出

key not found

更新於: 2020-09-18

281 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.