try catch - catch nie lapie bledu podczas odczytu z pliku xml

0

Witam mam problem zrobiłem funkcje z klauzulą try i catch i podczas odczytu pliku xml w którym odczytywany znacznik nie istnieje nie przechodzi w funkcji części catch

zatrzymuję się w tym miejscu (tmp = doc.GetElementsByTagName("InvoiceReferenceNumber")[0].InnerText;) i wywala bląd ;/;/ w programie a nie z częsci catch ;/;/
(elementu o nazwie InvoiceReferenceNumber w pliku xml nie ma)

za wszelkie pomocne info z gory dzieki

 
 private string funCzytanieXML(XmlDocument doc, string gidNum)
        {
            string tmp = "";
            string zwr = "";

            try
            {
                tmp = doc.GetElementsByTagName("InvoiceReferenceNumber")[0].InnerText;

                if (sprNumerFakturyCzyCData(tmp))
                {
                    zwr = tmp;
                }
                else
                {
                    err("Bledny format typu dokumentu " + doc.BaseURI, gidNum);
                }
            }
            catch (XmlException ex)
            {
                err(ex.Message.ToString().Replace("\n", " ") + "    " + ex.SourceUri, gidNum);
            }

            return zwr;
        }
0

ok już mam , usunąłem (XmlException ex) i działa tylko nie wiem dlaczego ??;/

0

daj:
catch(Exception ex)
to zadziała.

0
mateo59 napisał(a)

ok już mam , usunąłem (XmlException ex) i działa tylko nie wiem dlaczego ??;/

Bo przechwytywałeś XmlException, które pewno jest związane z przetwarzaniem danych XML, np. źle domkniętym tagiem węzła, a Twój wyjątek dotyczył czegoś zupełnie innego - jak sądzę braku obiektu, był to pewno NullReferenceException.
Ogólnie zasada jest taka, że najpierw łapiesz wyjątki, które chcesz jakoś specyficznie obsłużyć, a na końcu i tak zwykłe Exception, aby każdy wyjątek złapać. Coś w ten deseń:

 
try
{
    // jakiś kod
}
catch (XmlException xex)
{
    // wyświetlamy komunikat, że coś nie tak z XML
}
catch (FileNotFoundException fnfex)
{
    // wyświetlamy komunikat, że pliku nie ma
}
catch (Exception ex)
{
    // wyświetlamy komunikat, że nastąpił inny błąd
}

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