2009-10-22 162 views
1

我們都知道使用異常處理來控制程序的邏輯流程很糟糕。也就是說,你絕不會做的事:異常處理和程序邏輯

public void someMethod(Object someObject) { 
    try { 
     someObject.doSomething(); 
    } catch (NullPointerException npe) { 
     //handle Null case 
    } 
} 

public void someMethod(Object someObject) { 
    if(someObject != null) { 
     someObject.doSomething(); 
    } 
} 

我的問題是,什麼是一些很好的例外(HAR!)這個規則?在Java中,我可以考慮使用MalformedURLException來確定一個String是否是一個URL。你見過哪些其他很酷的異常處理濫用?

回答

0

當你把它們放在服務邊界上 - 從服務器到客戶端(就像WCF中的錯誤異常 - 有一個很好的方法可以將意外的錯誤從服務器傳回給客戶端,或從sql server中傳遞SqlExpcetion。 。)

有時候這是確定使用它們,以節省編程時間(如格式異常,當你將字符串轉換爲別的東西)ECT ....

0

在.NET Framework 1.0和1.1沒有一個現在有很多TryParse方法。在過去,我做了很多這樣的東西:

bool IsInteger(string str) 
{ 
    try 
    { 
    Int32.Parse(str); 
    return true; 
    } 
    catch (FormatException) 
    { 
    return false; 
    } 
} 
0

我在使用java反射時已經使用了相當多的東西。

例如,在一個領域是存在於一些類上漲(我指的是超類的一個),而不是類本身,我寫了這樣的情況 -

try{ 
//some stuff like follows 
Field f = cls.getDeclaredField(fieldName); 
} 
catch(NoSuchFieldException e){ 
cls = cls.getSuperClass(); 
} 

中當然,這是在一個循環下,循環退出條件是當cls爲空時。