2012-05-29 49 views
0

我使用ErrorException爲錯誤和異常我中心的錯誤處理功能:調用未定義的方法異常:: getSeverity()

例子:

set_error_handler('my_error_handler'); 
set_exception_handler('my_exception_handler');  

function my_error_handler ($errno, $errstr, $errfile, $errline) 
{ 
    my_exception_handler(new ErrorException($errstr, 0, $errno, $errfile, $errline)); 
} 

function my_exception_handler ($e) 
{ 
    echo $e->getSeverity(); 
    echo $e->getCode(); 
    echo $e->getMessage();   
} 

現在看來$e->getSeverity();僅在ErrorException本而不是在默認Exception;

因爲當我throw new Exception('test');我得到Fatal error: Call to undefined method Exception::getSeverity()

但是當我throw new ErrorException('test');它按預期工作。

這似乎是合乎邏輯的,但有沒有一種方法,我仍然可以使用throw new Exception('test');沒有得到致命錯誤?大多數第三方庫使用異常(而不是ErrorException),因此當發生第三方異常時它會出現問題,它會導致致命錯誤。我該如何解決這個問題?

回答

3

您可以檢查是否捕捉到的異常是ErrorException

if ($e instanceof ErrorException) { 
    echo $e->getSeverity(); 
} else { 
    // no getSeverity() available 
} 
+0

幾秒:)尼斯答案打我,在想同樣的事情。 – drew010

相關問題