Java / Android: как работать с типом возврата «Список <MyType>»? - PullRequest
1 голос
/ 18 ноября 2011

Моя проблема связана с Java / Android:

Я создал класс 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();

Заранее большое спасибо!

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Вы объявляете метод getAllData для выброса Exception.Компилятор теперь спрашивает вас, что делать, если выдается исключение типа Exception.

Вы НИКОГДА не должны бросать Exception как часть сигнатуры метода.Это слишком общее.Вместо этого вы должны попытаться выбросить только конкретные исключения, которые могут возникнуть.

Если вы не хотите, чтобы fetchData имел дело с исключениями, вы должны либо объявить fetchData, чтобы выдать те же исключения, либо сделать getAllData перехватить исключения и вернуть соответствующее значение, если исключениевыброшены.

0 голосов
/ 18 ноября 2011

Поскольку 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();
}
...