妥善處理錯誤與異常是撰寫健壯 PHP 應用程式的關鍵。本文整理核心錯誤類型、除錯技巧與異常捕獲機制。
<?php
// 開發環境建議顯示所有錯誤
error_reporting(E_ALL);
ini_set('display_errors', '1');
// 生產環境記錄到日誌,不顯示給使用者
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');
?>
PHP 5+ 引入物件導向異常模型,使用 try-catch-finally 區塊:
<?php
function divide($a, $b) {
if ($b == 0) {
throw new Exception("除數不能為零");
}
return $a / $b;
}
try {
echo divide(10, 0);
} catch (Exception $e) {
echo "捕獲異常:" . $e->getMessage();
} finally {
echo "結束處理";
}
?>
<?php
class MyAppException extends Exception {
public function __construct($message, $code = 0, Exception $previous = null) {
parent::__construct($message, $code, $previous);
}
public function __toString() {
return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
}
}
try {
throw new MyAppException("自訂錯誤", 1001);
} catch (MyAppException $e) {
echo $e;
}
?>
E_ALL,生產環境關閉顯示、開啟日誌set_error_handler() 將錯誤轉為異常統一處理catch 區塊吞沒異常,至少記錄日誌