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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP