Суть приложения такова, что я ввожу какие-то символы, которыми дополняются определенный url и с этого url уже идет парсинг нужных мне значений. При вводе правильных значений все работает как нужно, но вот если ввожу случайно символы которых не существует то приложение падает (хотя экспешены вроде все прописаны). Вот текст ошибки:
FATAL EXCEPTION: AsyncTask #1
Process: m.masyuk.com.fb.stackinfo, PID: 3901
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.get(ArrayList.java:411)
at m.masyuk.com.fb.stackinfo.MainActivity$SetInfo.doInBackground(MainActivity.java:260)
at m.masyuk.com.fb.stackinfo.MainActivity$SetInfo.doInBackground(MainActivity.java:234)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
И сам код:
private class SetInfo extends AsyncTask<String, Void, String> {
private TextView textViewForImport;
private int numImport;
private String code;
SetInfo(TextView textViewForImport, String code, int numImport) {
this.textViewForImport = textViewForImport;
this.code = code;
this.numImport = numImport;
}
@Override
protected String doInBackground(String... params) {
String url = params[0];
String stackInfo = "";
org.jsoup.nodes.Document doc;
try {
doc = Jsoup.connect(url).get();
Element mc_element = doc.select(code).get(numImport);
stackInfo = mc_element.text();
} catch (IOException e) {
e.printStackTrace();
}
return stackInfo;
}
@Override
protected void onPostExecute(String aVoid) {
textViewForImport.setText(aVoid);
}
}
ЗЫ Вот 260 строка, на которую указывает ошибка
Element mc_element = doc.select(code).get(numImport);
Ошибка Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
в данном примере говорит о том, что вы пытаетесь получить данные, которых нет. Перед получение следует проверить, есть ли вообще эти данные:
doc = Jsoup.connect(url).get();
if (!doc.select(code).isEmpty()) {
Element mc_element = doc.select(code).get(numImport);
stackInfo = mc_element.text();
}
приложение падает (хотя экспешены вроде все прописаны)
Вы ловите только IOException
, а на деле получаете IndexOutOfBoundsException
, который остаётся непойманым. Чтобы ловить все исключения, нужно указывать тип Exception
.
Но данный способ обработки ошибок я не рекомендую, так как могут возникнуть какие-то другие исключения, о которых вы даже не узнаете.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый деньЧитаю Camel in Action, там есть пример маршаллинга в xml с помощью jaxb Spring XML
Здравствуйте! Нашел в сети только один пример нормально работающей bootstrap карусели с эффектом fadeАвтор предлагает решить его с помощью css-файла...