我正在抛出异常并尝试在异常中包含变量,如下所示:
throw new Exception('Oh no, an exception! ' . $variable);
(其中$variable
是一个数组)
问题是,这只会在我的日志文件中添加以下内容:
不,是个例外!阵列
不幸的是我不是PHP的专家,我猜这可能意味着两件事之一:
1)$ variable是一个空数组
2)$ varialbe是一个包含数据的数组,但在异常中输出它不会输出所有内容
请告诉我1)是否属于这种情况(我希望不是这样)
但是,如果是2),我怎样才能获得有关$variable
的更多信息?是否可以在异常中执行print_r
或var_dump
,如下所示:
throw new Exception('Oh no, an exception! ' . print_r($variable));
或者会导致问题吗?
答案 0 :(得分:7)
或者会导致问题吗?
是的,它会的。在完全构造字符串之前将评估print_r
,如果您尝试打印出Exception
消息,输出将如下所示:
Array ( [x] => 5 [y] => 65 ) Oh no, an exception! 1
要解决此问题,您需要确保将print_r
的$return
参数设置为true
,以便返回值而不是回显:
throw new Exception('Oh no, an exception! ' . print_r($variable, true));
答案 1 :(得分:6)
答案 2 :(得分:4)
如果查看documentation for print_r
,您会看到第二个参数,如果真的,导致函数将信息作为字符串返回而不是立即发出。