我尝试使用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");
}
}
答案 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");
我还没有测试过它。