Php 在异常中使用print\r?
可能重复:Php 在异常中使用print\r?,php,Php,可能重复: 我抛出一个异常并尝试在异常中包含一个变量,如下所示: throw new Exception('Oh no, an exception! ' . $variable); (其中,$variable是一个数组) 问题是,这只会在我的日志文件中放入以下内容: 不,是个例外!排列 不幸的是,我不是PHP专家,我猜这可能意味着两件事之一: 1) $variable是一个空数组 2) $varialbe是一个数组,其中包含数据,但在异常中以这样的方式输出它并不会输出它的所有内容 请让我知道
我抛出一个异常并尝试在异常中包含一个变量,如下所示:
throw new Exception('Oh no, an exception! ' . $variable);
(其中,$variable
是一个数组)
问题是,这只会在我的日志文件中放入以下内容:
不,是个例外!排列
不幸的是,我不是PHP专家,我猜这可能意味着两件事之一:
1) $variable是一个空数组
2) $varialbe是一个数组,其中包含数据,但在异常中以这样的方式输出它并不会输出它的所有内容
请让我知道这里的情况是否如此(我希望不是这样)
但是,如果是2),如何获得有关$variable
的更多信息?是否可以在异常内部执行如下操作print\r
或var\u dump
:
throw new Exception('Oh no, an exception! ' . print_r($variable));
还是会引起问题
还是会引起问题
是的,会的。如果您尝试打印出Exception
消息,则将在字符串完全构造之前计算,输出将如下所示:
Array
(
[x] => 5
[y] => 65
)
Oh no, an exception! 1
如果查看,您将看到第二个参数(如果为truthy)使函数以字符串形式返回信息,而不是立即发出信息。使用第二个参数true返回输出,而不是立即输出
print\r($variable,true)
读取并将第二个参数作为
true
传递,以返回字符串$x=array();echo$x
将始终输出数组
。您试图在字符串上下文中使用数组,而数组显示为array
@MarcB感谢您的澄清,这对我来说现在更有意义了(我很困惑,因为我记得回显数组并正确输出)
throw new Exception('Oh no, an exception! ' . print_r($variable, true));