2014-02-13 32 views
3

我有一個工具類中的靜態方法,它將一個值賦給一個字段。投擲和異常或返回和錯誤信息

我的方法的縮減版本,:

public static void assignValue(String field, String valueToAssign){ 
    ... 
    //code to do assign 
} 

如果我目前拋出異常的錯誤但是我不確定如果這是正確的做法,因爲我在一個循環中調用assignValue,我想即使存在異常,循環也會繼續。因此,許多潛在的異常可以被拋出

for(int i = 0; i < assignmentList.size(); i++){ 
try{ 
    assignValue(assignmentList.get(i).fieldName, assignmentList.get(i).fieldValue); 
    }catch(AssignmentFailedException e){ 
     errorlist.add(e.getMessage()); 
    } 
} 
} 

會是更好的更好,如果assignValue返回一個錯誤消息,而不是一個例外?然後我可以存儲錯誤,當列表完成

for(int i = 0; i < assignmentList.size(); i++){ 
String errorMessage = assignValue(assignmentList.get(i).fieldName, assignmentList.get(i).fieldValue); 
if(errorMessage != ""){ 
    errorlist.add(errorMessage);  
} 
} 

如果我去的錯誤消息的做法,我應該重新命名方法拋出一個異常,讓用戶知道將返回一個錯誤信息?

+0

最後一個更好。如果您能夠控制「異常情況」,最好手動處理。 –

+2

請注意,您應該使用'equals'來比較字符串,而不是'=='/'!='。 http://stackoverflow.com/questions/513832 – yshavit

+0

@AshotKarakhanyan - 我會認爲,鑑於我們都是程序員,我們總是喜歡自動處理事情。使程序停止,以便用戶可以手動修復某些內容時,可以避免時並不是特別理想。 –

回答

0

拋出一個錯誤或異常不是特別有效,因爲將控制流傳遞給異常處理程序需要時間。如果可以,儘量避免創建並投擲新的。你甚至可以做一些簡單的事情,例如找到assignValue失敗的情況,使用條件(而不是例外)將它們分離出來,並打印關於發生的事情的消息。

0

如果拋出一個異常,不能輕易忽略,而返回碼可以。另一方面,處理「預期」錯誤時返回代碼更容易處理,並且返回代碼處理起來更便宜(雖然沒有錯誤發生時的開銷實際上可能高於異常)。

各有其優點。