将异常消息设置为数组


Setting exception message to an array

我创建了一个扩展Exception的类MyException,并在其构造函数中写道:$this->message = array("a"=>"A", "b"=>"B") .
之后,当我打电话给getMessage()时,我按预期得到了阵列。
一段时间后,我开始收到字符串"数组"的消息。在调试模式下查看时,我看到在抛出exception之前,消息仍然很好,但在catch内部它突然只显示字符串"Array"。
当我读到它时,我开始质疑它实际上是如何工作的,因为听起来你不能把array作为信息,但我向上帝发誓它奏效了。
我知道我可以在不同的字段中设置数组,但我想使用getMessage()这样我就可以像使用常规Exception一样处理MyException

编辑:
下面是一个使问题更清晰的示例:

        $ex = new MyException("SomeValue", "AnotherValue");
        echo "Before: ";
        print_r($ex->getMessage());
        echo "'n";
        try
        {
            throw $ex;
        } catch (Exception $ex) {
            echo "After: ";
            print_r($ex->getMessage());
            echo"'n";
        }         

输出:

Before: Array(
[a] => SomeValue
[b] => AnotherValue)
After: Array    

编辑#2:
我想通了。为了激活调试器,我 xdebug.so 放在设备上。如果我删除它,一切都很好。为什么?谁知道呢。。

这很好用,当然print_r

<?php 
class MyException extends Exception {       
    public function __construct($a, $b) { 
        $this->message = array("a" => $a, "b" => $b);
    } 
}
$ex = new MyException("SomeValue", "AnotherValue");
echo "Before: ";
print_r($ex->getMessage());
echo "'n";
try
{
    throw $ex;
} catch (Exception $ex) {
    echo "After: ";
    print_r($ex->getMessage());
    echo"'n";
} 
?>