Почему это обработанное исключение вызывает принудительное закрытие?[Geocoder] - PullRequest
0 голосов
/ 22 июня 2011

В моей AsyncTask есть следующее:

@Override
protected Void doInBackground(Context... c) {

    try {
        context = c[0];

        myLocation = new Geocoder((Activity)context, Locale.getDefault()); 

        if(myLocation.isPresent())
            myList = myLocation.getFromLocation(LocationHandler.getLat(), LocationHandler.getLon(), 1);
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
    catch (Exception e) 
    {
        e.printStackTrace();
    }

    return null;
}

Если я запускаю этот AsyncTask без сетевого подключения, мое приложение принудительно закрывается со следующим выводом стека:

 java.io.IOException: Unable to parse response from server
 at android.location.Geocoder.getFromLocation(Geocoder.java:136)
 at com.soyo.winnipegtransit.location.UpdateGeoCoderName.doInBackground(UpdateGeoCoderName.java:44)
 at com.soyo.winnipegtransit.location.UpdateGeoCoderName.doInBackground(UpdateGeoCoderName.java:1)
 at android.os.AsyncTask$2.call(AsyncTask.java:185)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
 at java.lang.Thread.run(Thread.java:1019)

Я не уверен, почему это исключение не обрабатывается?

1 Ответ

0 голосов
/ 22 июня 2011

У меня были похожие проблемы с исключениями, которые не были обработаны. Обычно это решается просто обработкой исключения одним оператором catch, не спрашивайте меня, как, но я уверен, что для этого есть веская причина. Вы пытались удалить catch(IOException e) и просто сохранить catch(Exception e)?

Ryan

...