2013-07-08 35 views
2

我使用的是$ ERRMSG陣列外部文件顯示錯誤,如:自定義消息PHP的異常處理

'app_init' => 'Cannot initialize application', 

使用條件語句,我調用該函數來顯示失敗消息:

if(!$condition) 
{ 
$arraywithmessages->functionforfiltering($err,'app_init',$aim); 
} 

...其中$犯錯是消息的數組,$目的是發佈錯誤(電子郵件,瀏覽等)

現在的預定義的方法,我想利用異常處理,但我不知道不知道從哪裏開始。誰能幫忙?這似乎並沒有工作:

try { 
if (!$condition) { 
throw new Exception('app_init'); 
} 
// continue 
} catch (Exception $e) { 
$arraywithmessages->functionforfiltering($err,$e->getMessage(),$aim); 
} 

回答

0

我不知道你到底想要什麼,但你應該記住,嘗試,應明智地使用catch。它只應用於特殊情況。如果你不以那種方式使用它們,那麼它就是GOTO代碼。

關於異常,記住您可以擴展Exception類並創建自己的異常並將它們捕獲到多個catch塊中,最後還有block。

關於Exception的構造函數。它有第二個參數是$code,你可以用它來顯示正確的信息。

$err = array(0x1 => 'my error app init'); 

try { 
if (!$condition) { 
    throw new Exception('app_init', 0x1); 
} 
// continue 
} catch (Exception $e) { 
    echo $err[$e->getCode()]; //it shouldn't be only echo it should do some tries to fix the code close streams etc. not just echo. 
} 

還有功能 set_exception_handler().其中:

設置默認的異常處理程序,如果一個例外是不是一個try/catch塊中捕獲。執行將在調用exception_handler後停止。

考慮使用它。有很多東西可以在manual.

+0

那麼,這似乎涵蓋了我的大部分意圖。我只是試圖實現,是用一個由key調用的數組的元素替換寫入的消息。 – jakubplus

+0

最?它不包括什麼?最好使用代碼而不是搜索字符串。這些代碼可能是消息陣列的關鍵字。就這樣。 – Robert