2010-02-02 19 views
0

我正在處理一個對象,在某個點實例化另一個對象。該內部對象可能會引發異常。我可以讓這個異常冒泡到任何處理父對象的代碼,這正是我想要做的,遵循KISS的哲學。或者,我可以在父對象中執行一些異常處理,也可能給「客戶」代碼提供更有意義的例外。是否有一個通用的規則要遵循,或者我是否會根據具體情況決定如何處理?在對象中拋出異常的對象

隨着孩子對象,我花時間寫錯誤代碼,所以在將來的某個時候,我可以給最終用戶一個更有意義的錯誤消息。如果父對象和子對象有自己的一組錯誤代碼,我該如何處理?看來我會寫一個異常處理程序,看看錯誤代碼和它的原始類,對不對?

回答

1

如果「外部」對象無法處理「內部」對象拋出的異常,那麼它不能嘗試。最好的情況是它可以捕捉到一些較爲常見的幾個,並重新拋出稍微更多的信息。

+0

所以我應該嘗試做一些,但不是太多? – user151841 2010-02-02 19:32:39

+0

正確。吸收和重新詮釋每一個例外是毫無意義的繁忙工作。 – 2010-02-02 19:33:52

+0

那麼,你是否必須重新拋出你無法處理的異常?如果沒有,只有當你能夠處理它們時,你有時會如何處理例外情況?如果是這樣,那麼這個代碼是什麼? catch(exception $ e){if($ e-> getCode()== 15){...} else {throw $ e; ''? – user151841 2010-02-02 20:56:04

1

假設外部對象無法處理異常,我只會捕獲並重新拋出它作爲一個不同的異常,如果有一個很好的理由來隱藏內部對象。你不希望你所有的代碼都依賴於那些不需要被暴露的東西的內部。

除此之外,如果外部對象不知道該做什麼或沒有什麼要添加,它不應該觸及異常。

相關問題