https://gist.github.com/esdras-schonevald/71a6730e6191c5e9c053e2f65b839eec
<?php
declare(strict_types=1);
/**
* 這是一個範例
* 如何使用 Enum 建立自訂例外狀況
* PHP 8.1 以上版本
*/
enum MyExceptionCase {
case InvalidMethod;
case InvalidProperty;
case Timeout;
}
class MyException extends Exception {
function __construct(private MyExceptionCase $case){
match($case){
MyExceptionCase::InvalidMethod => parent::__construct("錯誤的請求 - 方法無效", 400),
MyExceptionCase::InvalidProperty => parent::__construct("錯誤的請求 - 屬性無效", 400),
MyExceptionCase::Timeout => parent::__construct("錯誤的請求 - 超時", 400)
};
}
}
// 測試我的自訂例外類別
try {
throw new MyException(MyExceptionCase::InvalidMethod);
} catch (MyException $myE) {
echo $myE->getMessage(); // 錯誤的請求 - 方法無效
}