【问题标题】:PHP : Error: Wrong parameters for Exception with thrown Array ExceptionPHP:错误:异常参数错误,抛出数组异常
【发布时间】:2012-08-26 11:41:12
【问题描述】:

我使用数组抛出异常,如下所示:

$response = array('login_email' => '<div class="warning">Your email and / or password were incorrect</div>');

throw new \Exception($response);

我发现的是:

Error: Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]])

有什么想法吗?

【问题讨论】:

    标签: php exception exception-handling


    【解决方案1】:

    Exception() 不会采用数组。你需要给它一个字符串。

    $response = 'Your email and / or password were incorrect.';
    
    throw new \Exception($response);
    

    读取错误:

    Exception([string $exception [, long $code [, Exception $previous = NULL]]])

    【讨论】:

    • 这就是我的想法,虽然我很确定过去我已经设法将数组作为参数传递 - 无论如何谢谢。
    • 如果你想指定异常的类型,你可以给它一个代码。新异常($response,2);
    • SPL 中还有几个预定义的异常类型,如果其中任何一个适用的话。
    • 但是它们都扩展了主异常——并继承了发送给构造函数的参数——不是吗?
    • 作为附加提示,如果您使用常量作为第二个参数,请确保它已实际定义...
    【解决方案2】:

    如果你想用数组作为参数抛出异常,你可以json_encode你的数组,让它变成一个字符串。

    $response = array('login_email' => 'sometext', 'last_query' => 'sometext');
    throw new \Exception(json_encode($response));
    

    还可以查看 json_encode 的第二个参数:您可以添加 JSON_PRETTY_PRINT 以使您的错误缩进(它更具可读性但需要更多空间),或者您可以使用像 JSON Viewer 这样的工具为 Notepad++ 格式化您的 json查看它时的字符串。

    【讨论】:

      【解决方案3】:

      如果你想抛出一个包含数组的异常,那么你可以创建自己的异常类并扩展它 - Can you throw an array instead of a string as an exception in php?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多