我是新手,这两天做了做了一个学院新闻的客户端,但也发现了一些问题,有时候学校的服务器会停止维护,有时候会网络连接超时,出现这些情况时,我想让程序提示用户,而不是强制退出,怎么解决?new Thread()
   {
   public void run()
   {
   String mytitle = null; 
   String mytime=null;
   try  
   {  
   mytitle = new String(); 
   mytime=new String();
   Elements topnews ;
   Document doc = Jsoup.connect(getnewPage(id,page)).timeout(3000).get();
   if("4".equals(id))
   {
   topnews = doc.getElementsByClass("list");
   }
   else
   {
   topnews = doc.getElementsByClass("contList"); 
   }
   Elements links = topnews.select("a[href]");  
   Elements time=topnews.select("td[width=80]");
   if("4".equals(id))
   {
   for (int i=0;i<15;i++) { 
   map=new HashMap<String,Object>();
   mytitle=links.get(i+2).text(); 
   Log.e("aaaaaaa", mytitle);
   pagelink[i+1]=links.get(i+2).attr("abs:href");
   mytime=time.get(i).text();
   map.put("title", mytitle);
   map.put("time", mytime); 
   lists.set(i+1, map);
  
   }
  
   }
   else
   {
   for (int i=0;i<links.size();i++) { 
   map=new HashMap<String,Object>();
   mytitle=links.get(i).text(); 
   Log.e("aaaaaaa", mytitle);
   pagelink[i+1]=links.get(i).attr("abs:href");
   mytime=time.get(i).text();
   map.put("title", mytitle);
   map.put("time", mytime); 
   lists.set(i+1, map);
  
   }
   }  
         
   Message m=new Message();
   m.what=1;
   mainTab.this.handler.sendMessage(m);
         
   }  
   catch (Exception e)  
   {  
   mytitle = e.getMessage();  
   Toast.makeText(mainTab.this, "网络未开启或者连接超时", Toast.LENGTH_LONG).show();
   e.printStackTrace();  
   }
   finally
   {
   dialog.dismiss();
   }

   }
   }.start(); 网络exceptionandroid超时

解决方案 »

  1.   

    网络请求时异常错误是有很多不同的;超时是SocketTimeOutException ;你在Exception 这个异常捕捉之前
    捕捉下超时的异常;
    根据不同的异常 你可以给与不同的toast信息提示用户;
    看了你的代码 timeout(3000)大概的意思是3000毫秒 (我猜的)你用的这个 我没见过也懒得去找了; 你可以改动这个值
    来设置超时时间
      

  2.   

    一般来说,设置一个超时时间,一般http会是5000毫秒,超时之后就提示用户重新加载或者做其他
      

  3.   

    一楼说的不错,在报错的地方try,catch就行了,错误类型SocketTimeOutException 
      

  4.   

    (⊙o⊙)…  捕捉exception不能捕捉所有的异常吗?