简体   繁体   English

执行NPE引起的doinbackground()时发生java.lang.runtimeexception错误

[英]java.lang.runtimeexception error occurred while executing doinbackground() caused by NPE

Whenever I open my app, it crashes and gives me the following logcat errors. 每当我打开我的应用程序时,它都会崩溃并给我以下logcat错误。 I do not know where I have gone wrong. 我不知道哪里出了问题。 I wanted to know why my application crashes and how can I fix it. 我想知道为什么我的应用程序崩溃以及如何解决它。

??-?? ??:??:??.???: INFO/<unknown>(<unknown>): java.lang.RuntimeException: An error occured while executing doInBackground()
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.os.AsyncTask$3.done(AsyncTask.java:300)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.lang.Thread.run(Thread.java:841)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>): Caused by: java.lang.NullPointerException
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at com.example.gravitas2015.MainActivity$jsonhandler.handleResponse(MainActivity.java:284)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at com.example.gravitas2015.MainActivity$jsonhandler.handleResponse(MainActivity.java:1)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:273)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at com.example.gravitas2015.MainActivity$request.doInBackground(MainActivity.java:250)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at com.example.gravitas2015.MainActivity$request.doInBackground(MainActivity.java:1)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     ... 4 more

Here's my code for doInBackground 这是我的doInBackground代码

private class request extends AsyncTask<Void, Void, List<String>>{


        AndroidHttpClient client= AndroidHttpClient.newInstance("");
        HttpGet request;

        @Override
        protected List<String> doInBackground(Void... arg0) {
            if (isOnline())
            {
                try{

                    request = new HttpGet("http://www.com");

                }catch(NullPointerException e ){
                    e.printStackTrace();}
                jsonhandler handler = new jsonhandler();
                try
                {
                    return client.execute(request,handler);
                }catch(ClientProtocolException exception){
                    exception.printStackTrace();
                }catch(IOException exception){
                    exception.printStackTrace();
                }

            }
            return null;
        }
        protected void onPostExecute(List<String> result)
          {
            super.onPostExecute(result);
            if (this.client != null) {
              this.client.close();
            }
          }

    }
private class jsonhandler implements ResponseHandler<List<String>>{
    @Override
    public List<String> handleResponse(HttpResponse response)
            throws ClientProtocolException, IOException {

        List<String> result = new ArrayList<String>();
        String jsonresponse = new BasicResponseHandler().handleResponse(response);
        int i;
        JSONArray data;
        try {

            data = new JSONArray(jsonresponse);
            for(i=0;i<data.length();i++)
            {
                JSONObject obj = (JSONObject)data.get(i);
                tid[i]=Integer.parseInt(obj.get("tid").toString());
                name[i]=obj.get("name").toString();
                org[i]=obj.get("organisation").toString();
                desc[i]=obj.getString("description").toString();
                date[i]=obj.get("date").toString();
                time[i]=obj.get("timings").toString();
                loc[i]=obj.get("location").toString();
                fee[i]=obj.get("fee").toString();
                cname1[i]=obj.get("cname1").toString();
                pho1[i]=obj.get("cno1").toString();
                cname2[i]=obj.get("cname2").toString();
                pho2[i]=obj.get("cno2").toString();
                email[i]=obj.get("email").toString();
                team[i]=obj.get("team").toString();


                result.add("EVENT: "+name[i]+"\nDATE: "+date[i]+"\nVENUE: "+loc[i]+"\n");
            }
            k=i;
        }catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }


}

in your try block you say 在您的try块中,您说

request = new HttpGet("http://gravitas-eshwa.rhcloud.com/eventapi.php");

if this fails you catch NullPointerException and do 如果失败,则catch NullPointerException并执行

jsonhandler handler = new jsonhandler();

try
   {
       return client.execute(request,handler);
   }catch(ClientProtocolException exception){
         exception.printStackTrace();
   }catch(IOException exception){
       exception.printStackTrace();
   }

So you simply proceed to 所以你只要继续

return client.execute(request,handler);

when you have just caught request as null , which causes the error. 当您刚刚将request捕获为null ,将导致错误。 So you have to add something to the first catch to react to the null request . 因此,您必须在第一个catch添加一些内容以响应null request

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.RuntimeException:执行doInBackground()时发生错误 - java.lang.RuntimeException: An error occurred while executing doInBackground() java.lang.RuntimeException:在 Google Play 商店上传时执行 doInBackground() 时出错 - java.lang.RuntimeException: An error occurred while executing doInBackground() while upload in google play store 致命异常:AsyncTask#1 java.lang.RuntimeException:执行doInBackground()错误时发生错误 - FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occurred while executing doInBackground() error 致命异常:AsyncTask#1 java.lang.RuntimeException:执行doInBackground()时发生错误 - FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occurred while executing doInBackground() 致命异常:AsyncTask#3 java.lang.RuntimeException:执行doInBackground()时发生错误 - Fatal Exception: AsyncTask #3 java.lang.RuntimeException: An error occurred while executing doInBackground() java.lang.RuntimeException:执行doInBackground()时发生错误 - java.lang.RuntimeException:An error occured while executing doInBackground() java.lang.RuntimeException:执行doInBackground()URI时发生错误 - java.lang.RuntimeException: An error occured while executing doInBackground() URI 致命异常:AsyncTask#1 java.lang.RuntimeException:在执行doInBackground()并将图像发送到服务器时发生错误 - FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground(), while sending an image to the Server 如何解决错误java.lang.RuntimeException:执行doInBackground()时发生错误? - how to solve the error java.lang.RuntimeException: An error occured while executing doInBackground()? 非常基本的android代码发布错误。 java.lang.RuntimeException:执行doInBackground()时发生错误 - Very basic android code posts error. java.lang.RuntimeException: An error occured while executing doInBackground()
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM