我正在制作一个将 RSS 提要解析为 SQLite 数据库的应用程序,然后从中读取该数据库以填充帖子列表。数据库在那里,因此即使没有连接,用户也可以查看之前检索到的帖子。
我已经把所有的解析都放到了 try-catch 中;但是,当它捕获到异常时,应用程序会崩溃。有没有办法优雅地处理这个异常,所以它只是跳到读取数据库中的内容?我已经研究过使用SocketException
and XmlPullParserException
,但这些要么带来更多错误,要么不影响问题。
我正在制作一个将 RSS 提要解析为 SQLite 数据库的应用程序,然后从中读取该数据库以填充帖子列表。数据库在那里,因此即使没有连接,用户也可以查看之前检索到的帖子。
我已经把所有的解析都放到了 try-catch 中;但是,当它捕获到异常时,应用程序会崩溃。有没有办法优雅地处理这个异常,所以它只是跳到读取数据库中的内容?我已经研究过使用SocketException
and XmlPullParserException
,但这些要么带来更多错误,要么不影响问题。
哪个异常被抛出?您可以在 try/catch 语句的末尾添加一个通用异常处理程序。例如
try {
//...your code here
} catch (XmlPullParseException xe) {
//log error
} catch (SocketException se) {
//log error
} catch (Exception e) {
//log error
}
您还可以使用以下静态方法在拨打电话之前检查有效连接:
public static boolean isOnline(Context context) {
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting())
return true;
else
return false;
}
确保添加:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
如果您使用该调用,则添加到您的 android 清单