2011-11-17 92 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

相关问题