检查函数是否执行成功的函数,否则异常。可能在 PHP?

Function that checks if function executes successfully, otherwise exception. Possible in PHP?

我需要一些接受函数作为参数的函数,并将 运行 它用于 try {} catch (Exception $e) {}。如果它 运行s 成功,什么也不做,否则,抛出新的异常。这有点像函数检查器,它检查函数是否 运行 成功。任何人都可以帮助我或提供建议吗? 感谢您的任何回复。

函数应该像这样工作:

function itwillfail () {
    echo 10 / 0;
}
check("itwillfail");

Output: Caught exception: Custom exception text here, because it has been thrown as custom. ("check" is that function I need)

我尝试了什么:

function check($func) {
    try {
        call_user_func($func);
    } catch (Exception $e) {
        throw new Exception("Custom text here.");
    }
}

编辑:更多解释:我需要创建函数,它与 "try" 和许多不同的 "catch"es 相同,用于不同类型的异常。

并不是每个函数在失败时都会抛出异常。许多函数,尤其是那些已经存在很长时间的函数,只会触发 PHP 错误而不是异常。

要处理这些问题,您可以使用自定义错误处理程序: https://www.php.net/manual/en/function.set-error-handler.php

因此您可以设置一个自定义错误处理程序来拦截这些类型的故障并将它们作为异常抛出。该功能的全部意义在于完成您想要做的事情 - 以自定义方式处理错误。

总结您的问题:

您想要一种从字符串变量调用自定义函数的方法(您已经知道可以通过 call_user_func($var);

然后您希望该函数抛出自定义异常错误

困惑 不清楚的是您选择不使用 set_error_handler 函数定义错误处理程序的原因,该函数可以有效地执行您的要求并设置 switch 语句以根据生成的错误输出不同的消息。

例子 以下示例未使用 call_user_func 但它实际上允许您编写如何处理错误

<?php 

    function myerror($error_no, $error_msg) { 
        echo "Error: [$error_no] $error_msg "; 
        echo "\n Now Script will end"; 
        die(); 
    }  

    // Setting set_error_handler 
    set_error_handler("myerror"); 

    $a = 10; 
    $b = 0; 

    // Force the error 
    echo($a / $b);
?>