為什麼要使用「例外處理」
例外處理是一種程式設計技術,用於處理運行時可能發生的異常狀況或錯誤。它的主要目的包括:
- 提高程式碼的穩定性和可靠性: 通過處理可能的異常情況,防止程式崩潰或未預期的行為。
- 改善代碼的可讀性和可維護性: 通過將錯誤處理邏輯集中在一個地方,使代碼更易於理解和維護。
- 提供優雅的錯誤信息處理: 可以捕獲異常、記錄錯誤信息並采取適當的措施來處理。
語法
在 PHP 中,使用 try...catch
块來處理異常。基本語法如下:
try {如果
// 可能會引發異常的程式碼
} catch (Exception $e) {
// 異常處理程式碼
}
try
块中的程式碼引發了異常,控制流程就會轉移到對應的 catch
块,並執行相應的異常處理程式碼。常見異常類型
在 PHP 中,有幾種常見的異常類型,例如:
- Exception:所有異常的基類。
- InvalidArgumentException:當函數的參數類型不正確時拋出。
- RuntimeException:運行時錯誤的基類。
- PDOException:用於處理與資料庫操作相關的異常。
主動觸發異常訊息
你可以使用 throw
關鍵字來主動引發異常,如下所示:
function divide($a, $b) {
if ($b == 0) {
throw new Exception("除數不能為零");
}
return $a / $b;
}
try {
echo divide(10, 0);
} catch (Exception $e) {
echo "錯誤訊息:" . $e->getMessage();
}
在這個例子中,如果 $b
為零,divide
函數將引發一個包含指定錯誤訊息的異常,然後在 catch
块中捕獲並輸出異常訊息。
主動觸發用戶自定義異常訊息
你也可以自定義一個繼承自 Exception
的新異常類別,以便更好地組織和管理不同類型的異常情況。
class CustomException extends Exception {
public function errorMessage() {
// 自訂異常訊息
return "自定義錯誤訊息:".$this->getMessage();
}
}
function checkNumber($number) {
if ($number > 10) {
throw new CustomException("數字不能大於 10。");
}
return true;
}
try {
checkNumber(15);
} catch (CustomException $e) {
echo $e->errorMessage();
}
在這個例子中,CustomException
是自定義的異常類別,它繼承自 Exception
,並定義了一個 errorMessage
方法來返回自定義的錯誤訊息。