2011-11-17 52 views
1

我的問題是關於Java/Android的:Java/Android:如何使用返回類型'列表<MyType>'?

我創建了一個類MyClass其中有一個方法getAllData()返回一個List<MyType> = new ArrayList<MyType>()。在另一個類MyOtherClass我打電話給這個方法,並想將返回的列表寫入另一個List<MyType>

但我得到以下錯誤:未處理的異常類型異常

我能做些什麼呢?

下面的代碼:

MyClass.java

public List<MyType> datas = new ArrayList<MyType>(); 

public List<MyType> getAllData() throws Exception{ 

//add some things to datas... 

return datas; 
} 

MyOtherClass.java

public void fetchData(){ 

    MyClass mydatas = new MyClass(); 
    List<MyType> thedatas = mydatas.getAllData(); 

} 

我該如何解決這個問題呢? 圍繞這個聲明的「try/catch(Exception e)」,似乎沒有從getAllData();

得到返回的列表感謝很多提前!

+0

你有MyClass和MyOtherClass,但問題是,你有你的類型MyType嗎? :D – hovanessyan

+0

是的,當然我有MyType定義。不管怎麼說,還是要謝謝你。 @Mark Byers:你到底是什麼意思?我無法編譯,所以我直接從代碼行旁邊的代碼中直接得到Eclipse的這條消息,在這裏我設置了'列表 thedatas = mydatas.getAllData();'。它建議我圍繞這個包裝一個try/catch塊。所以'嘗試{列表 thedatas ...} catch(Exception e){}'但這沒有幫助。 – Reymanx

回答

0

由於getAllData()可能拋出檢查異常(即,異常不是一個RunTimeException),你必須圍繞語句try-catch

public void fetchData() { 
    MyClass mydatas = new MyClass(); 
    try { 
     List<MyType> thedatas = mydatas.getAllData(); 
    } catch (Exception ex) { 
     // display or log exception name 
    } 
} 

或者方法名稱後添加throws條款。

public void fetchData() throws Exception { 
    MyClass mydatas = new MyClass(); 
    List<MyType> thedatas = mydatas.getAllData(); 
} 
+0

非常感謝,沒錯。我做到了,但沒有奏效。它不工作的原因是,方法'getAllData();'拋出一個異常......但也許它有助於某人。 – Reymanx

1

您聲明getAllData方法拋出Exception。編譯器現在要求您在引發Exception類型的異常時應該怎麼做。

你永遠不要把Exception作爲方法簽名的一部分。這太籠統了。相反,您應該嘗試僅拋出可能發生的特定異常。

如果您不希望fetchData需要處理異常,那麼您必須聲明fetchData拋出相同的異常,或者讓getAllData捕獲異常並在拋出異常時返回適當的值。

+0

謝謝!你是對的。 – Reymanx

相關問題