異常是程式運行時出現的非正常狀態。Java 透過 Throwable 體系統一管理:Error(嚴重錯誤,通常不捕獲)與 Exception(可捕獲處理)。
public class VariableDemo {
public static void main(String[] args) {
try {
System.out.println(1 / 0); // 拋出 ArithmeticException
System.out.println("此處不會執行");
} catch (Exception e) {
e.printStackTrace(); // 列印堆疊追蹤
System.out.println("異常捕獲");
} finally {
System.out.println("異常finally"); // 無論是否異常都執行
}
}
}
輸出順序:堆疊追蹤 → "異常捕獲" → "異常finally"
PHP 5.5+ 才支援 finally,且必須手動 throw:
<?php
function getNum($a) {
if (!$a) {
throw new Exception("Division by zero.");
}
return 10 / $a;
}
try {
echo getNum(0);
} catch (Exception $e) {
echo $e->getMessage(); // "Division by zero."
echo "異常捕獲";
} finally {
echo "異常finally";
}
// 輸出:Division by zero. 異常捕獲 異常finally
?>
| 特性 | Java | PHP |
|---|---|---|
| 異常根類別 | Throwable | Exception |
| finally 支援版本 | JDK 1.0+ | PHP 5.5+ |
| 拋出方式 | JVM 自動拋出 / 手動 throw | 必須手動 throw |
| 多重 catch | 支援 (Java 7+ 可合併) | 支援 |