Strona 1 z 1

Obsługa błędów.

Nowy postNapisane: sobota, 2 stycznia 2010, 17:09
przez mko000
Witam. Piszę program wysyłający pliki na ftp i mam problem. Gdy niepoprawnie wpiszę host lub inne dane wywala mi błąd. Jak go przechwycić i wyświetlić wiadomość ze dane są błędne?

Re: Obsługa błędów.

Nowy postNapisane: sobota, 2 stycznia 2010, 17:17
przez Pitek
Tak np.
Kod: Zaznacz cały
try
{
   IdFTP1->Host="ftp.republika.pl";
   IdFTP1->Connect();
}
catch(...)
{
   MessageBox(NULL,"Podano błędny adres hosta","Info",MB_ICONINFORMATION|MB_OK);
}

To tylko przykład bo nie podałem hasła i nazwy użytkownika.
Można potem dodatkowe dane zagnieżdżać.

Re: Obsługa błędów.

Nowy postNapisane: sobota, 2 stycznia 2010, 17:37
przez Cyfrowy Baron
A próbowałeś metody try catch?

Kod: Zaznacz cały
try
{
// próba połączenia
}
catch(....)
{
jeżeli nie komunikat błędu
}


Można też przechwycić komunikat błedu:

Kod: Zaznacz cały
try
{
// próba połączenia
}
catch(Exception &exception)
{
  ShowMessage("Błąd:" + exception.Message);
}


albo:

Kod: Zaznacz cały
try
{
// próba połączenia
}
catch(Exception &exception)
{
  exception.Message.Insert("Błąd: ", 1);
  Application->ShowException(&exception);
}


W drugim i trzecim wypadku, treść komunikatu będzie najpewniej po angielsku, gdyż takim językiem operują biblioteki, poza oczywiście tą częścią komunikatu gdzie wstawisz swój tekst.

Re: Obsługa błędów.

Nowy postNapisane: niedziela, 3 stycznia 2010, 13:29
przez banita
w blokach catch powinnienes lapac tylko te wyjatki ktore znasz, innych nie wolno.
konstrukcje:
catch(...) <- lapie wszystkie mozliwe wyjatki kotre nie zostaly przechwycone
catch(const Exception& ex) <- lapie 99% albo 100% wyjatkow w VCL bo to ich klasa bazowa.

jesli nie wiesz co to za blad i nie masz wiedzy ze w ogole taki blad moze wystapic to jak chcesz go obslugiwac?
w blokach catch powinno podawac sie konkretne znane przypadki sytuacji wyjatkowych.

ps: vcl troche utrudnia takie(prawidlowe) postepowanie gdyz czesto rzuca wyjatkami na prawo i lewo w sytuacjach ktore w cale nie powinny byc wyjatkowe.