0

可以忽略“catch”子句吗?我有这段代码,我想做的是扫描所有包含特定字符串的单词并将它们存储在 String res 中。

但是我现在拥有的代码不会遍历循环,因为它会在“catch”子句中断时停止。有没有办法忽略 catch 子句,让“try”继续循环,直到它到达文件末尾?

String delimiter = " - ";
String[] del;
String res = new String();

if(curEnhancedStem.startsWith("a"))
{
InputStream inputStream = getResources().openRawResource(R.raw.definitiona); 
try {
      BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
      String s = in.readLine();
      while(s != null)
        {
             s = in.readLine();
             del = s.split(delimiter);
             if (del[0].contains(curEnhancedStem))
             {
                 res = res + s + "\n\n";
             }
        }
          return res;
    }
    catch (Exception e) {
                // nothing to do here
            }   
        }
4

3 回答 3

3

如果您真的希望它在发生错误后继续在内循环中,您可以在其中放置另一个 try 块。

String delimiter = " - ";
String[] del;
String res = new String();

if(curEnhancedStem.startsWith("a"))
{
InputStream inputStream = getResources().openRawResource(R.raw.definitiona); 
try {
  BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
  String s = in.readLine();
  while(s != null)
    {
         try {
             s = in.readLine();
             del = s.split(delimiter);
             if (del[0].contains(curEnhancedStem))
             {
                 res = res + s + "\n\n";
             }
         }
         catch (Exception e) {
            // Error in string processing code (as opposed to IO) - Don't care... Continue
        }   
    }


    }
    return res;
}
catch (Exception e) {
        // nothing to do here
        }   
    }

另一个想法是使用更具体的异常——不仅仅是一般的捕获所有异常

于 2013-03-04T13:06:38.343 回答
2

我觉得你一定会在里面出现异常,所以试试这个。

  try {
  BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
  String s = in.readLine();
  while(s != null)
    {
     try{
         s = in.readLine();
         del = s.split(delimiter);
         if (del[0].contains(curEnhancedStem))
         {
             res = res + s + "\n\n";
         }
        } catch(Exception e){
            // Do Something
      }
    }
      return res;
}
catch (Exception e) {
            // nothing to do here
        }   
    }

如果您遇到异常,它将在循环内处理,但您的循环将继续。

于 2013-03-04T13:02:36.987 回答
1

catch您的条款中没有任何内容。尝试添加类似下面的 forwhile循环(将其保留在try块中)以及找出exception你得到的内容:

catch(Exception e)
{
   Log.e("Exception here: "+ e.getMessage());
}
于 2013-03-04T13:04:06.193 回答