2015-01-08 3 views
-3

Я пытался разобрать некоторые строки. Поскольку я новичок в C#, мне было любопытно в какой-то момент вы можете видеть ниже.Временное решение для обработки исключений в C#

Когда Lines_Array[i] пуст (Lines_Array[i].Length==0), он выдает исключение. Это уже то, что я хочу в примере # 2 и бесполезно в примере # 1.

Я хочу избавиться от Исключения. Поскольку строка с нулевой длиной будет моим пределом. Есть ли какое-либо решение, альтернатива или обходное решение?

Пример # 1:

try 
{ 
    if (Lines_Array[i + 6].Substring(p, 7).Trim() == "") 
     break; 
} 
catch (ArgumentOutOfRangeException) { break; } 

Пример № 2: Мне нужно выяснить, сколько "Groze" линии существует на каждой странице. Мне нужно посчитать, пока я не увижу линию со стрелкой. Но это исключение. Скриншот: Sample data for counting

try 
{ 
    while (Lines_Array[i + k].Substring(2, 5).Trim() == "Groze") 
    { 
     bedensay++; 
     k++; 
    } 
} 
catch (ArgumentOutOfRangeException) { } 

Спасибо заранее.

+2

Ваш вопрос, кажется, немного неясно, что это, что вы пытаетесь делать? –

+0

Как уже упоминалось, Q неясен. Если вы просто хотите избежать ArgumentOutOfRangeException, просто добавьте проверку длины Lines_Array перед получением нужной подстроки – apomene

+0

Вы знакомы с конструкцией 'for' и/или' foreach'? Кажется, это лучше, чем 'while'. Что вы пытаетесь сделать точно? – Default

ответ

0

Если вы не хотите, рамки, чтобы бросить исключение, просто проверить длину строки перед обработкой его:

var line = Lines_Array[i + 6]; 
if (string.IsNullOrEmpty(line)) 
{ 
    // Handle empty or null string. 

} 
else 
{ 
    // Handle non-empty string... 
} 
+0

Учитывая исходный вопрос, я предположил, что ArgumentOutOfRangeException вызвано методом SubString(). –

0

Вы не должны использовать исключения для управления вашего программного потока. Вместо этого избегайте их в первую очередь. Также обратите внимание, что это лучший стиль программирования для выполнения одного оператора в одной строке, а не для их подключения - это улучшит читаемость и будет легче отлаживать, если вы пройдете через код.

Пример:

int index = i + k; 
if (index >= Lines_Array.Length) 
{ 
    break; 
} 
else 
{ 
    var line = Lines_Array[index]; 
    if (string.IsNullOrEmpty(line)) 
    { 
     // break; or whatever you need to ... 
    } 
    else 
    { 
     // if (line.Substring ...) and so on 
    } 
} 
0

Добавить проверку, чтобы увидеть, если длина Lines_Array 0. Измените код следующим образом:

try 
{ 
    if(Lines_Array.Length != 0) 
    { 
     while (Lines_Array[i + k].Substring(2, 5).Trim() == "Groze") 
     { 
      if(Lines_Array.Length <= (i + k)) 
      { 
       bedensay++; 
       k++; 
      } 
     } 
    } 
} 
catch (ArgumentOutOfRangeException) { } 
+0

Я изменил свой код. – Abhishek

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