2013-03-04 3 views
0

Можно ли игнорировать предложение? У меня есть этот код, и я хочу, чтобы он сканировал все слова, содержащие определенную строку, и сохранил их в String res.Android - Игнорирование положения уловов?

Но код, который у меня есть, не проходит через цикл, потому что он останавливается, когда прерывается предложение catch. Есть ли способ игнорировать предложение catch и просто позволить «попробовать» продолжить цикл до тех пор, пока он не достигнет конца файла?

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 
      } 
     } 
+1

Он идет к статье улова, потому что есть исключения в коде. Отправка его обратно в предложение try вряд ли поможет вам, так как в большинстве случаев вы снова столкнетесь с этим исключением. Попробуйте отладить ваш код и исправить исключение. –

+0

Да предложение catch может быть проигнорировано, не записывая его в код. –

+0

Если я не написал предложение «catch», я получаю сообщение об ошибке, говорящее, что «readline()» должно быть окружено предложением catch, или я должен положить finally ниже try. –

ответ

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 
     } 
    } 

Если вы получите исключение, оно будет обработано внутри цикла, но ваш цикл будет продолжен.

+0

О, плохо попробуйте этот! это может быть тот, который мне нужен! Благодаря! –

+0

Привет! Большое вам спасибо за эту идею. Код теперь работает правильно! :) –

+0

без проблем .. :) –

1

В вашей статье catch ничего нет. Попробуйте добавить что-то вроде ниже while цикла (держать его в try блоке), а также выяснить, какие exception у меня:

catch(Exception e) 
{ 
    Log.e("Exception here: "+ e.getMessage()); 
} 
+0

Исключение i get бывает "если del [0] не содержит curEnhancedStem". –

+1

@JonelleAtienza затем попытайтесь добавить блок try/catch для цикла while, а также получить сообщение в DDMS и исправить проблему. Хорошее кодирование !!! –

+0

Спасибо! Сделаю! :) –

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 
     } 
    } 

Другая идея состоит в том, чтобы использовать более конкретные исключения - не только общий улов все Exception

+0

Внешний блок try-catch может быть ненужным – nicopico

+0

Я вижу ... Не знал, что его можно поставить несколько попыток/уловов ... плохо попробуйте этот! Спасибо! –

+0

Привет! Код работает! Большое спасибо! Я бы выбрал это как лучший ответ, но AnujMathur_07 отправил раньше на 4 минуты. Я ценю помощь! –

Смежные вопросы