Java 如何使用试抓代替强制关闭?

Java 如何使用试抓代替强制关闭?,java,android,try-catch,Java,Android,Try Catch,我有android和java的代码。当用户的Internet连接出现问题或无法访问网站时,我想向用户显示一个对话框。我试图将我的代码放入try-catch块,但当互联网连接出现问题时,我的应用程序关闭。我想向用户显示消息,而不是关闭应用程序 HttpPost ht = new HttpPost("http://yahoo.com"); HttpClient hc = new DefaultHttpClient(); HttpResponse hr = null;

我有android和java的代码。当用户的Internet连接出现问题或无法访问网站时,我想向用户显示一个对话框。我试图将我的代码放入
try-catch
块,但当互联网连接出现问题时,我的应用程序关闭。我想向用户显示消息,而不是关闭应用程序

 HttpPost ht = new HttpPost("http://yahoo.com");
        HttpClient hc = new DefaultHttpClient();
        HttpResponse hr = null;

        try {
            hr = hc.execute(ht);

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        String htmlTemp = "";
        try {

            HttpEntity he = hr.getEntity();

            htmlTemp = new String(EntityUtils.toString(he));

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

您可以尝试将
UnknownHostException
添加到捕获中,也可以在调用请求之前使用此方法:

  public static boolean hasConnection() {
    ConnectivityManager cm = (ConnectivityManager) MbridgeApp.getContext().getSystemService(
        Context.CONNECTIVITY_SERVICE);

    NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (wifiNetwork != null && wifiNetwork.isConnected()) {
      return true;
    }

    NetworkInfo mobileNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if (mobileNetwork != null && mobileNetwork.isConnected()) {
      return true;
    }

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
      return true;
    }

    return false;
  }

您是否在清单文件中声明了此使用权限

<uses-permission android:name="android.permission.INTERNET" />


是否有错误的堆栈跟踪?想知道这是否是权限问题吗?您可能在第一个try/catch块中遇到未处理的异常,您只捕获了ClientProtocolException和IOException。您只捕获了两种非常特定的错误类型。从通用错误处理程序开始捕获异常分析如何处理它们,然后实现特定的错误处理程序。请参阅和。