2012-03-21 29 views
1

我正在做一個應用程序,它是顯示長時間關閉插入地址。Android的地理編碼器錯誤,這是不被處理的嘗試catch

它工作正常,但問題只在於,當我在文本框中插入錯誤的地址名稱(如「abc xyz」)時,它會停止並在模擬器上顯示「不幸地位置已停止」的錯誤。

我無法理解這一點,因爲我知道try和catch可以處理任何異常。這是真的嗎?

我的示例項目中只有一個文本框和編輯框,這是按鈕單擊的代碼。 這裏是一個代碼...

try{ 
    bt.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      try { 
       //List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1); 
       add=et.getText().toString(); 
       List<Address> addresses = geocoder.getFromLocationName(add, 1); 


       if(addresses != null) { 
        Address returnedAddress = addresses.get(0); 
        StringBuilder strReturnedAddress = new StringBuilder("\n"); 
        for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) { 
         strReturnedAddress.append("Latitude="+addresses.get(0).getLatitude()).append("\n"); 
         strReturnedAddress.append("Longitude="+addresses.get(0).getLongitude()).append("\n"); 
         strReturnedAddress.append("Country="+addresses.get(0).getCountryName()).append("\n"); 
         strReturnedAddress.append("State="+addresses.get(0).getAdminArea()).append("\n"); 

        } 
        myAddress.setText(strReturnedAddress.toString()); 
       } 
       else{ 
        myAddress.setText("No Address returned!"); 
       } 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       myAddress.setText("Canont get Address!"); 
      } 
      /*Intent intent=new Intent(Main.this, Horoscope.class); 
      intent.putExtra("extra", myAddress.getText().toString()); 
      startActivity(intent);*/ 
     } 
    }); 
    } 
    catch (Exception e) { 
     // TODO: handle exception 
     myAddress.setText("Canont get Address!"); 
    } 
+0

試圖抓住'NullPointerException'和'IOException' BEZ地理編碼器拋出這些例外 – 2012-03-21 10:57:10

回答

2
try{ 
        //List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1); 
      add=et.getText().toString(); 
      List<Address> addresses = geocoder.getFromLocationName(add, 1); 


      if(addresses != null) { 
       Address returnedAddress = addresses.get(0); 
       StringBuilder strReturnedAddress = new StringBuilder("\n"); 
       for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) { 
        strReturnedAddress.append("Latitude="+addresses.get(0).getLatitude()).append("\n"); 
        strReturnedAddress.append("Longitude="+addresses.get(0).getLongitude()).append("\n"); 
        strReturnedAddress.append("Country="+addresses.get(0).getCountryName()).append("\n"); 
        strReturnedAddress.append("State="+addresses.get(0).getAdminArea()).append("\n"); 

       } 
       myAddress.setText(strReturnedAddress.toString()); 
      } 
      else{ 
       myAddress.setText("No Address returned!"); 
      } 

      }} catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      myAddress.setText("Canont get Address!"); 
     } 
     /*Intent intent=new Intent(Main.this, Horoscope.class); 
     intent.putExtra("extra", myAddress.getText().toString()); 
     startActivity(intent);*/ 
    } 
}); 
} 

      catch (Exception e) { 
        Toast.makeText(getApplicationContext(), "UR MESSAGE" ,  Toast.LENGTH_LONG).show(); 
        startActivity(new Intent(this, YourActivity.class)); 
        finish(); 
} 
1

試試這個

try 
{ 
Address returnedAddress = addresses.get(0); 
} 
catch (Exception e) { 
Toast.makeText(getApplicationContext(),"UR MESSAGE",Toast.LENGTH_LONG).show(); 
startActivity(new Intent(this, YourActivity.class)); 
finish(); 
} 

我希望你會得到它..