0

これは非常にまれにしか発生せず、再現できませんでしたが、以下のコードはホストから例外を取得することがあります。コードは次のとおりです。

public class AddComment extends AsyncTask<String, Void, String> 
{
    @Override
    protected String doInBackground(String... theParams) 
    {
        String myUrl = theParams[0];
        final String comment = theParams[1];
        final String user_id = theParams[2];
        final String problem_id = theParams[3];
        final String recent_topic_id = theParams[4];

        String charset = "UTF-8";           
        String response = null;

        try 
        {                           
            String query = String.format("comment=%s&user_id=%s&problem_id=%s&recent_topic_id=%s", 
                     URLEncoder.encode( comment, charset), 
                     URLEncoder.encode( user_id, charset), 
                     URLEncoder.encode( problem_id, charset), 
                     URLEncoder.encode( recent_topic_id, charset)
                     );             

            final URL url = new URL( myUrl + "?" + query );

            final HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            conn.setDoOutput(true); 
            conn.setRequestMethod("POST");

            conn.setDoOutput(true);
            conn.setUseCaches(false);

            conn.connect();

            InputStream stream = conn.getInputStream();
            byte[] stream_buffer = new byte[8196];
            int readCount;
            StringBuilder stream_builder = new StringBuilder();
            while ((readCount = stream.read(stream_buffer)) > -1) 
            {
                stream_builder.append(new String(stream_buffer, 0, readCount));
            }

            response = stream_builder.toString();       
        } 
        catch (Exception e) 
        {
                           // EXCEPTION HAPPENS HERE
                e.printStackTrace();
        }

        return response;
    }

    @Override
    protected void onPostExecute(String result) 
    {
           if ( result == null )
           {
                  // Do stuff
           }
        }
        else
        {               
      // Do stuff
    }        
}        

なぜこれが起こるのか、それを防ぐ方法を知っている人はいますか?

4

1 に答える 1

1

これを物理デバイスでテストしていますか? これは、セル信号が悪いか、デバイスまたはエミュレーターへのインターネット接続が不安定な場合に発生する可能性があります. それはまた、それを再現できない理由を説明します。

于 2012-11-06T03:31:31.443 に答える