我有一个从在线文件中读取行的互联网操作。它位于try-catch块中。当执行失败时(例如,对于丢失的Internet连接),操作将转到catch块并且App崩溃。我怎样才能避免崩溃?
try {
BufferedReader reader = new BufferedReader(new InputStreamReader((new URL(MegaMethods.url+params[0])).openStream()), 8192);
String line;
while ((line = reader.readLine()) != null) {
count++;
}
reader.close();
}
catch (Exception e){
// Here I want to do something to avoid app crash
}
答案 0 :(得分:1)
尝试在尝试获取文件之前检查设备是否具有网络连接。如果找不到网络,则避免该任务。
代码示例 - 调用此方法。如果返回true,则表示网络可用。
public boolean isNetworkAvailable() {
boolean status=false;
try{
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getNetworkInfo(0);
if (netInfo != null && netInfo.getState()==NetworkInfo.State.CONNECTED) {
status= true;
}else {
netInfo = cm.getNetworkInfo(1);
if(netInfo!=null && netInfo.getState()==NetworkInfo.State.CONNECTED)
status= true;
}
}catch(Exception e){
e.printStackTrace();
return false;
}
return status;
}
此外,我同意你的观点,由于某种原因,应用程序可能会抛出异常并到达Catch块。但请注意,即使catch块为空,也不会使应用程序崩溃。
由于try catch块之外的一些代码,应用程序可能会崩溃。