【发布时间】:2013-09-28 19:01:14
【问题描述】:
我想知道是否有一种方法可以防止由于IOException 或MalformedURLException 而导致试图在传递的uri 字符串上建立连接的后台线程使整个应用程序崩溃。
虽然我捕获了所有抛出的异常并将消息打印到 logcat,但我不希望应用程序与 msg 一起崩溃:Unfortunately, MyApp has stopped。
我希望应用程序通过在主/UI 线程上发布相关的错误消息来优雅地退出。
比如说:
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());
}
}
}
在这种情况下,如果输入的字符串不是可行的 url 或无法建立连接,我的应用程序就会崩溃。但我希望能够在 UI 线程上发布一些有用的消息并防止应用程序崩溃。
谢谢。
【问题讨论】:
-
Logcat 中的错误跟踪显示什么?
-
因此,如果用户输入一些乱码 url 并单击按钮,那么我会得到 09-28 15:05:29.262: E/MyApp Activity(2940): class java.net.MalformedURLException: Protocol not发现:然后应用程序崩溃。我想以一种要求用户通过在主线程上发布消息来检查输入的 url 的方式来处理这个问题。