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

标签 php error-handling

您会推荐哪个?

  • 从函数返回错误代码,例如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/

    相关文章:

    java - 很好地处理数据库约束错误

    php - 如何使用php获取输入类型为="file"的选定文件的路径?

    c# - 从 C# 打印堆栈跟踪信息

    php - PHP错误仅显示一次,刷新后消失

    javascript - 模式: How to access object.properties (correctly) from result returned by async function

    javascript - 早午餐设置 LOGGY_STACKS=true

    php - SQL 检查当天

    php - Imagemagick动画gif尺寸优化

    php - 使用 php 网页脚本中的变量执行 mysql 查询

    php - 使用 nginx 进行奇怪的 php 重定向(在 apache 中工作正常)