熟悉Android开发,习惯了在UIThread上进行网络调用时的NetworkOnMainThreadException
异常。
但是在下面的情况下会抛出 IOException 而不会抛出 NetworkOnMainThreadException
。
代码:
try {
a = mGeo.getFromLocationName("SFO", 1);
} catch (IOException e) {
e.printStackTrace();
}
我觉得这很奇怪。不应该抛出网络异常(这是一个运行时异常)吗?
最佳答案
如果您在 link 上检查实现情况然后 IOException 是已检查的异常并从代码中抛出。 作为引用,我正在从上面的链接添加实现更多可以在实现中的评论中找到
public List<Address> getFromLocationName(String locationName, int maxResults) throws IOException {
if (locationName == null) {
throw new IllegalArgumentException("locationName == null");
}
try {
List<Address> results = new ArrayList<Address>();
String ex = mService.getFromLocationName(locationName,
0, 0, 0, 0, maxResults, mParams, results);
if (ex != null) {
throw new IOException(ex);
} else {
return results;
}
} catch (RemoteException e) {
Log.e(TAG, "getFromLocationName: got RemoteException", e);
return null;
}
}
NetworkOnMainThreadException 是一个未经检查的异常,因为它扩展了 RuntimeException,这 link来自java文档可能有帮助。 希望这能回答您的问题。
关于Android:未调用 NetworkOnMainThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391313/