我一直在尋找這一點,我剛纔好像碰到同樣的文章,在此代碼:
try
{
//some code
}
catch(Exception $e){
throw $e;
}
哪裏$é被存儲或網絡管理員怎麼看的呢?我應該尋找一個特殊的功能?
我一直在尋找這一點,我剛纔好像碰到同樣的文章,在此代碼:
try
{
//some code
}
catch(Exception $e){
throw $e;
}
哪裏$é被存儲或網絡管理員怎麼看的呢?我應該尋找一個特殊的功能?
從catch {}塊內部拋出的Exception object(在這種情況下,$ e)將被下一個最高try {} catch {}塊捕獲。
這裏的一個傻例如:
try {
try {
throw new Exception("This is thrown from the inner exception handler.");
}catch(Exception $e) {
throw $e;
}
}catch(Exception $e) {
die("I'm the outer exception handler (" . $e->getMessage() . ")<br />");
}
的上述輸出是
我外的異常處理程序(這是從內部異常處理程序拋出。)
$e
是的一個例外或從延伸的任何其他類。這些對象具有一些共同的特定屬性和方法(繼承自例外類),您可以使用它們。有關更多詳細信息,請參閱chapter about exceptions和Exception member list。
我假設你使用某種第三方代碼/庫中的代碼,它將拋出異常到你的代碼中。您只需準備好要拋出的異常,然後就可以將其記錄/顯示出來,無論您想要什麼。
try {
$Library->procedure();
catch(Exception $e) {
echo $e->getMessage(); //would echo the exception message.
}
欲瞭解更多信息,請閱讀PHP手冊的條目Exceptions。
的線條:
catch(Exception $e){
throw $e;
}
唐\ t是有意義的。當你發現一個異常你想做些什麼不同之處,如:
catch(Exception $e){
error_log($e->getMessage());
die('An error has occurred');
}
但在你的情況下,異常直接拋給這將已經發生的外層的try塊。
如果你改變你的代碼:
//some code
會產生完全相同的行爲。
一件好事就是Exception實現__toString()並輸出一個調用堆棧跟蹤。
因此,在低級別的例外,我知道我會想看看我是如何走到,在catch(有時候)我根本就
error_log($e);
感謝馬克,並原諒我newbiness但怎麼辦我檢查getMessage,以便看到出現什麼錯誤? – jcslzr 2009-06-05 18:02:39
$ e-> getMessage()只是一個返回字符串和錯誤信息的函數。 這裏的示例#1(http://www.php.net/manual/en/language.exceptions.extending.php)有一些有關標準Exception對象中可用的方法的很好的信息。 – 2009-06-05 18:04:40
謝謝,我會檢查它 CS – jcslzr 2009-06-05 18:07:46