Dostęp do błędów C#

0

Witam.
Mam taki problem. Mianowicie mam pętlę, która odczytuje z pliku linijkę do odpowiedniej tablicy.
Czasami jeżeli słów w linii jest za mało, to wyświetla błąd

ArgumentOutOfRangeException was unhandled

przykład :
mam tablicę 4 elementową i przypisuje do niej dane

dana1,dana2,dana3,dana4

dana1,dana2

W pierwszej linii jest dobrze, ale w drugiej wyświetla błąd.
Moje pytanie brzmi, jak powinien wyglądać kod (WindowsFormsApplication) że gdy błąd ten będzie występował, to program otworzy mi ten plik z liniami i wskaże mi która to linia ma za mało danych, żebym mógł ręcznie dopisać.
Będę wdzięczny za każdą informację.
Dziękuję

0

Pokaż kod.

0
 
foreach (string linia in tekst)
                {


                    if (linia.StartsWith("\"FS\""))//czy linijka to FS?
                    {
                        licznik = 0;
                        slowo = linia.Split(new string[] { ",", ",\"", "[", "\r\n" }, StringSplitOptions.None).ToArray();
                        #region FS
                        string kij = (
                slowo[21].Substring(0, 8) + " "                                                      //1
                + slowo[6].Trim(new char[] { '\"' }).PadRight(16).Substring(0, 16) + " "              //2
                + slowo[13].Trim(new char[] { '\"' }).PadRight(40).Substring(0, 40) + " "             //3
                + slowo[15].Trim(new char[] { '\"' }).PadRight(6).Substring(0, 6) + " "              //4a
                + slowo[14].Trim(new char[] { '\"' }).PadRight(12).Substring(0, 12) + " "            //4b
                + slowo[16].Trim(new char[] { '\"' }).PadRight(20).Substring(0, 20) + " "            //4c
                + slowo[17].Trim(new char[] { '\"' }).PadRight(15).Substring(0, 15) + " "               //5
                + slowo[19].Trim(new char[] { '\"' }).PadRight(38).Substring(0, 38) + " "               //6
                + Convert.ToString(index).PadLeft(3).Substring(0, 3) + " "                             //7
                + "NFN"                                                                               //8
                );
                        #endregion
                        listBox1.Items.Add(kij);
                        //licznik = 0;
                        index++;

                    }
                    else
                    {
                        licznik++;
                        if (licznik == 3)
                        {
                            zawartosc = linia.Split(new string[] { ",", ",\"", "[", "\r\n" }, StringSplitOptions.None).ToArray();
                            ;
                            string kij = (
                                 slowo[22].PadRight(8).Substring(0, 8) + " "
                                 + slowo[25].PadLeft(3).Substring(0, 3) + " "
                                 + "N" + " " + " "
                                 + zawartosc[1].PadRight(5).Substring(0, 4).Replace('.', ',') + " "
                                 + slowo[27].PadRight(14).Substring(0, 12).Replace('.', ',') + " "
                                 + "V" + " " + " "
                                 + zawartosc[1].PadRight(5).Substring(0, 4).Replace('.', ',') + " "
                                 + slowo[28].PadLeft(14).Substring(0, 12).Replace('.', ',') + " "
                                 + "Z"
                                 );
                            listBox1.Items.Add(kij);
                            listBox1.Items.Add("\n");
                        }
                    }
                }
                #endregion

W string kij zapisuje mi odpowiednie slowa w odpowiednich formatach. Chodzi o odczyt linii.
Schemat Lini dobrej to

[NAGLOWEK]
"FS",1,0,,,"tekst1",tekst2,tekst 3 i jego ciąg dalszy,"tekst 4, w którym są przecinki, ale dalej to tekst 4", itp.

A jeżeli linia jest "załamana" czyli

[NAGLOWEK]
"FS",1,0,,,"tekst1",tekst2,tekst 3
i jego ciąg dalszy,"tekst 4, w którym są przecinki, ale dalej to tekst 4", itp.

Wyświetla błąd **IndexOutOfRangeException was unhandled **
i chcę, żeby w catch otworzył mi ten plik w notatniku i pokazał która to linia, żebym mógł ręcznie usunąć to "załamanie"

0

Chcesz napisać program, który otworzy plik w notatniku, a potem przewinie scrollbar i zaznaczy linię, której nawet nie potrafisz znaleźć? Nie zrobisz tego.

Wyjątki jak sama nazwa wskazuje służą do obsługi wyjątkowych sytuacji. Skoro wiesz, że niektóre linie w pliku są załamane, to nie jest to już wyjątkowa sytuacja, bo jesteś tego w pełni świadomy. Wykryj te załamane linie, a potem popraw, możesz to nawet zrobić w locie, podczas działania programu. Chyba jesteś w stanie wykryć, że jakaś linia jest "za krótka", czyli jej właściwość Length jest za mała?

1 użytkowników online, w tym zalogowanych: 0, gości: 1