与try和catch的url连接错误

时间:2015-10-25 18:42:28

标签: java android web-applications webview try-catch

我尝试使用android中的try和catch块创建一种无需Internet连接或Web服务器关闭的方式。在日食IOException中有红色下划线。如果加载http://192.168.0.23/loc/index.php失败,则应加载"file:///android_asset/myerrorpage.html"。我知道只能尝试从php中捕获并实际看到任何教程,但无法找到我的错误。

显示以下消息:

  

IOException的无法访问的catch块。永远不会从try语句主体

抛出此异常

我的代码:

 @Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_localy);
    mWebView = (WebView) findViewById(R.id.webview);
    // Brower niceties -- pinch / zoom, follow links in place
    mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    mWebView.setWebViewClient(new GeoWebViewClient());
    // Below required for geolocation
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setGeolocationEnabled(true);
    mWebView.setWebChromeClient(new GeoWebChromeClient());     
    // Load google.com
    try {
    mWebView.loadUrl("http://192.168.0.23/loc/index.php");
    }
    catch (IOException e) {
        mWebView.loadUrl("file:///android_asset/myerrorpage.html");

    }
}

2 个答案:

答案 0 :(得分:3)

  

IOException的无法访问的catch块。永远不会从try语句主体

抛出此异常

表示您在try上放置的代码并未触发任何IOException尝试Exception e,如下所示:

 try {
mWebView.loadUrl("http://192.168.0.23/loc/index.php");
}
catch (Exception e) {
    Log.d(e.getMessage()); //Get the Exception thrown.
    mWebView.loadUrl("file:///android_asset/myerrorpage.html");

}

而且你会知道你得到的是什么异常。

答案 1 :(得分:1)

loadUrl不会抛出IOException

  

public void loadUrl(String url)

     

加载指定的网址。

参数
url 要加载的资源的网址

这就是为什么你不应该尝试捕获IOException的原因(你只能捕获try块代码可能抛出的异常)。

只需用一个语句替换整个try-catch块:

mWebView.loadUrl("http://192.168.0.23/loc/index.php");

至于如何检测URL加载中的错误,上面的链接包含以下代码示例:

 webview.setWebViewClient(new WebViewClient() {
   public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
     Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
   }
 });
 webview.loadUrl("http://developer.android.com/");

所以,要根据你的代码进行调整:

 mWebView.setWebViewClient(new WebViewClient() {
   public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
     mWebView.loadUrl("file:///android_asset/myerrorpage.html");
   }
 });
 mWebView.loadUrl("http://192.168.0.23/loc/index.php");

我还没有测试过它。