将PHP警告转换为用户定义的异常

问题描述 投票:0回答:1

使用的语言:PHP版本:5.6

我正在尝试使用以下功能将文件上传到服务器:

move_uploaded_file($source,$destination);

[由于任何原因,文件上传失败

  • 权限被拒绝,
  • 找不到目标文件夹,
  • 它只是发出警告,并继续执行代码的其他部分。但是我想捕获该警告,并在警告的名称引起任何警告时更改程序的流程,以便抛出适当的异常。

    我当前正在使用try{}catch(){}块上载文件,但未引发警告异常。

    已编辑找到了...

    move_uploaded_file($source,$destination);
    

    根据文件上传的状态返回true或false。但这并没有说明原因。怎么知道的?

  • php file-upload php-5.6
    1个回答
    0
    投票

    我想set_error_handler()是正确的选择。确保您仔细阅读了文档。

    https://www.php.net/manual/en/function.set-error-handler.php

    首先,您需要一个函数(或公共类方法)来处理错误。示例:

    function error_handler($code, $text, $file, $line) {
        echo sprintf('code: %s, text: %s, file: %s, line: %s', $code, $text, $file, $line );
    
        return false; // continue with PHPs error handling
    }
    

    第二,在您的init / bootstrap代码中的某处调用set_error_handler。指定您的error_handler方法并设置要通知您的情况的适当标志。

    $flags = E_ALL & ~(E_STRICT | E_NOTICE);
    set_error_handler('error_handler', $flags);
    error_reporting($flags);
    

    警告:如果您打算捕获内存不足之类的错误,则代码应准备使用尽可能少的内存。同样,资源可能不再可用(例如数据库连接或文件句柄)。

    hth

    © www.soinside.com 2019 - 2024. All rights reserved.