gpt4 book ai didi

php - 从函数返回PHP错误常量(例如E_USER_ERROR),还是使用trigger_error?

转载 作者:行者123 更新时间:2023-12-03 07:48:19 28 4
gpt4 key购买 nike

您会推荐哪个?

  • 从函数返回错误代码,例如E_USER_ERROR,并确定更高级别的正确消息:
    function currentScriptFilename()
    {
    if(!isset($_SERVER['SCRIPT_FILENAME']))
    {
    //This?
    return E_USER_ERROR;
    }
    else
    {
    $url = $_SERVER['SCRIPT_FILENAME'];
    $exploded = explode('/', $url);
    return end($exploded);
    }
    }
  • 从函数执行trigger_error(),并显示特定的错误消息:
    function currentScriptFilename()
    {
    if(!isset($_SERVER['SCRIPT_FILENAME']))
    {
    //Or this?
    trigger_error('$_SERVER[\'SCRIPT_FILENAME\'] is not set.', E_USER_ERROR);
    }
    else
    {
    $url = $_SERVER['SCRIPT_FILENAME'];
    $exploded = explode('/', $url);
    return end($exploded);
    }
    }

  • 我不确定是否会后悔在我的函数中放置一堆错误消息,因为我想将其用于其他项目。

    或者,您会推荐完全不同的东西吗?

    最佳答案

    不要混在一起。
    错误通知和错误处理是不同的任务。

    您必须同时使用两种方法。
    如果您认为$ _SERVER ['SCRIPT_FILENAME']的可用性值得一则错误消息,则可以使用触发器错误。但是,如果您不进行检查,PHP本身将发出通知。

    如果要处理此错误,只需检查此函数的返回值即可。
    但是我不会为此任务创建特殊功能。

    所以,

    if (!$filename = basename($_SERVER['SCRIPT_FILENAME']) {
    // do whatever you want to handle this error.
    }

    够了

    异常对于处理错误,了解我们是否发生任何错误可能很有用。

    一个简单的例子:
    try {
    $filename = basename($_SERVER['SCRIPT_FILENAME'])
    if (!$filename) throw new Exception("no filename");

    $data = get_some_data_from_db() or throw new Exception("no data");

    $template = new Template();
    //Exception could be thrown inside of Template class as well.
    }
    catch (Exception $e) {
    //if we had any errors
    show_error_page();
    }
    $template->show();

    关于php - 从函数返回PHP错误常量(例如E_USER_ERROR),还是使用trigger_error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978802/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com