[英]Setting exception message to an array
我創建了一個擴展Exception
的類MyException
,並在其構造函數中編寫了: $this->message = array("a"=>"A", "b"=>"B")
。
之后,當我調用getMessage()
,得到了預期的數組。
過一會兒我開始以字符串“ Array”的形式獲取消息。 在調試模式下查看時,我看到在引發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";
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.