Variable/Dynamic Catch 块中的异常类型

Variable/Dynamic Exception Type in Catch Block

我正在尝试创建一个函数,该函数在被调用时传递一个可调用对象和一个异常“类型”,作为 ::class 字符串或类似的东西。这个想法是该函数将在 try/catch 块内调用回调。

示例函数:

public static function try(callable $callback, string $exceptionClass) : object | null {
     try {
         ...
         $callback();
         ...
     catch($exceptionClass $e) {
         ...
     }
}

我找到了 this 答案。但是我不确定如何获取类型。

你不能像这样在 catch 中使用变量:

try {
    $callback();
} catch ($exceptionClass $e) {
}

你必须做这样的事情,你捕获所有的东西,然后有条件地检查异常类型:

try {
    $callback();
} catch (\Throwable $e) {
    if ($e instanceof $exceptionClass) {
    }
}