2013-12-18 14 views
1

我不知道應該返回,當一些異常發生像在我的例子如果檢查異常發生,返回什麼?

public MyClass createComponent(){ 
    String className = "foo.MyClass"; 
    try { 
    final Class<? extends MyClass> clazz = Class.forName(className).asSubclass(MyClass.class); 
    return clazz.getDeclaredConstructor(List.class, String.class).newInstance(list, name); 
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { 
    e.printStackTrace(); 
    } 
// return null; //?? 
} 
+1

這取決於你需要什麼。 –

+0

**取決於** .... – Maroun

回答

4

根據您的API的邏輯和根異常的相似,你可能

  • 回報null
  • 重新拋出異常
  • 讓它通過(即聲明和不捕捉)
  • 拋出一個新的離子,嵌入事業

如果例外是真正的例外(他們不應該發生),如從你的代碼看起來,你應該拋出一個運行時異常或InternalError指出,有媒體庫中的一個內部錯誤。返回null這裏沒有任何好處,可能會隱藏一個錯誤。

+0

+1如果您不知道如何處理異常,請將其重新拋出或在'throws'子句中聲明它。如果它是一個你所假設的異常是不可能的,那麼我會用'throw new AssettionError(e)來包裝它;' –

+0

我會爲一個內部錯誤使用一個錯誤。 –

+0

我肯定會添加「不要把它放在首位」(只是聲明它)作爲選項。 –

相關問題