2010-03-02 28 views
1

我只想確認我對異常的理解以及它們如何影響它們的對象。確認異常的行爲和對象的含義

如果我拋出異常,停止方法的處理,更正?所以這是在做

if (some_check()) { 
    throw new Exception(...); 
} else { 
    ... 
} 

沒有一點我應該這樣做

if (some_check()) { 
    throw new Exception(...); 
} 

rest_of_code(); 

另外,如果我扔在__construct一個例外,那會破壞對象,對不對?所以我應該盡我所有的參數驗證異常 - 事先投入 - 如果在輸入驗證異常中無論如何都會被炸燬,那麼構建對象就毫無意義。

回答

2

是的,你這樣做是正確:d你有票了,從我:d

Allthough考慮這一點,你可能有一個數據兩項測試:d

if(checkOne (a)){ 
    throw new Exception(...); 
} 
else (checkTwo(a)){ 
... 
+0

第二次檢查中不是'else'多餘? if(){} if(){}'或多或少一樣嗎? – user151841 2010-03-02 17:09:47

+1

如果checkOne檢查患者是否面部有血管瘤,並檢查兩個血管瘤是否有毛髮生長(癌症的假設徵兆),那麼以這種方式嵌套檢查是有意義的。 checkTwo不會執行沒有血管瘤的患者。 – 2010-03-02 17:17:02

+0

這是一個非常人爲的例子:D有些編程語言產生了像這樣的嵌套語句的軍隊:D決策支持系統是用這樣的編程語言實現的。 – 2010-03-02 17:25:16

0

這是很正常扔一個構造函數中的異常,你沒有其他選擇。你也沒有提到擁有某種內存資源的對象,確保你正在使用using語句或者try/catch/finally,並且釋放內存和異常。

+0

php是否支持'finally'? – user151841 2010-03-02 17:10:04

+0

不好意思,這是C#。 – JonH 2010-03-02 17:32:31