NullPointerException с StringBuilder - PullRequest
       4

NullPointerException с StringBuilder

0 голосов
/ 04 октября 2010

Ниже приведен очень распространенный сбой из кода ниже.

Я думал, что моя попытка, уловы справятся с этим.

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1102)
Caused by: java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:65)
at java.io.InputStreamReader.<init>(InputStreamReader.java:65)
at com.test.test.FinderMain.grabPlaneRoute(FinderMain.java:759)
at com.test.test.FinderMain.access$7(FinderMain.java:729)
at com.test.test.FinderMain$GetRouteTask.doInBackground(FinderMain.java:684)
at com.test.test.FinderMain$GetRouteTask.doInBackground(FinderMain.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)

Строка 759 находится в grabPlaneRoute и является строкой, содержащей «StringBuilder total = new StringBuilder ();»

Может кто-нибудь помочь с этим, это сводит меня с ума! : -)

private void grabPlaneRoute(String adshex) {


    List<GeoPoint> localList = new ArrayList<GeoPoint>();

    HttpURLConnection con = null;
    URL url;
    InputStream is=null;
    try {
        url = new URL("http://www.testurl.com&test=" + adshex);

        con = (HttpURLConnection) url.openConnection();
        con.setReadTimeout(20000 /* milliseconds */);
        con.setConnectTimeout(60000 /* milliseconds */);
        con.setRequestMethod("GET");
        con.setDoInput(true);

        // Start the query
        con.connect();
        is = con.getInputStream();
    }catch (IOException e) {
                    //handle the exception !
        e.printStackTrace();
        return;
    }

    //localList = decodePoly(convertStreamToString(is));
    //Log.i("HTTP DUMP", convertStreamToString(is));

    BufferedReader r = new BufferedReader(new InputStreamReader(is),8024);
    StringBuilder total = new StringBuilder();
    String line;
     try {
    while ((line = r.readLine()) != null) {
        String[] separated = line.split(",");

        GeoPoint p = getPoint(Double.valueOf(separated[0]),Double.valueOf(separated[1]));
        localList.add(p);
    }
     }catch (IOException e) {
         //handle the exception !
            e.printStackTrace(); 
     }



    drawPlaneRoute(localList);


}

Ответы [ 2 ]

4 голосов
/ 04 октября 2010

Строка 759 - это строка, начинающаяся с BufferedReader r = new ....

Переменная is равна нулю.

Что происходит, когда con.GetInputStream возвращает ноль и не выдает исключение? Ты не занимаешься этим делом, и это, вероятно, происходит здесь.

Кроме того, я вообще не вижу необходимости в блоке try / catch. Просто позвольте исключению просачиваться в стек вызовов. Теперь вы скрываете IOException, не позволяя любому, кто звонит grabPlaneRoute, обнаружить, что произошла ошибка.

2 голосов
/ 04 октября 2010

Для StringBuilder total = new StringBuilder(); практически невозможно вызвать NullPointerException. С другой стороны, ближайшая причина Исключения находится в logtrace:

at java.io.Reader.<init>(Reader.java:65)
at java.io.InputStreamReader.<init>(InputStreamReader.java:65)

Что заставляет меня думать, что это вызвано:

BufferedReader r = new BufferedReader(new InputStreamReader(is),8024);

В этом случае единственное, что может быть нулевым, это is.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...