簡體   English   中英

將異常消息設置為數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM