我想知道是否有一種方法可以防止由於IOException
或MalformedURLException
而導致試圖在傳遞的uri字符串上建立連接的後臺線程崩潰整個應用程序。 雖然我捕獲了所有拋出的異常並將消息輸出到logcat,但我不希望應用程序與msg:Unfortunately, MyApp has stopped
一起崩潰。 我希望應用程序通過在主/ UI線程上發佈相關的錯誤消息來優雅地退出。如何防止Android應用程序因後臺線程中的IOException而崩潰?
說,例如:
public void onClick(View v){
new Thread(new MyDownloaderClass(url_str)).start();
}
private class MyDownloaderClass implements Runnable{
private String url_str;
public MyDownloaderClass(String arg){url_str=arg;}
public void run(){
URL url=null;
int respCode=0;
try{
url=new URL(str);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod("HEAD");
connection.connect();
respCode=connection.getResponseCode();
}catch(MalformedURLException e){
Log.e(TAG,e.getClass()+": "+e.getMessage());
}catch(IOException e){
Log.e(TAG,e.getClass()+": "+e.getMessage());
}
}
}
在這種情況下,我的應用程序崩潰,只是如果輸入的字符串不是prasable網址或無法建立連接進行。但我希望能夠在UI線程上發佈一些有用的消息,並防止應用程序崩潰。
謝謝。
Logcat中的錯誤跟蹤中顯示了什麼? – NormR
因此,如果用戶輸入一些亂碼url並點擊按鈕,那麼我得到09-28 15:05:29.262:E/MyApp Activity(2940):class java.net.MalformedURLException:Protocol not found:然後應用程序崩潰。我想通過在主線程中發佈消息來要求用戶檢查輸入的URL的方式來處理此問題。 – kharesp