Mam trochę kodu C, nad którym pracuję, i znajduję błędy, gdy kod jest uruchomiony, ale mam mało informacji o tym, jak zrobić prawidłowy try/catch (jak w C# lub C++).ANSI C odpowiednik try/catch?
Na przykład w C++ chcę tylko zrobić:
try{
//some stuff
}
catch(...)
{
//handle error
}
ale w ANSI C jestem nieco zagubiony. Próbowałem wyszukiwać w Internecie, ale nie widzę wystarczająco dużo informacji o tym, jak to zrobić. Pomyślałem, że zapytam, czy ktoś może wskazać mi właściwy kierunek.
Oto kod, nad którym pracuję (dość prosta, metoda rekursywna) i chciałbym zawrzeć z try/catch (lub równoważną strukturą obsługi błędów).
Jednak moim głównym pytaniem jest po prostu jak spróbować/catch w ANSI C ... implementacja/przykład nie musi być rekursywna.
void getInfo(int offset, myfile::MyItem * item)
{
ll::String myOtherInfo = item->getOtherInfo();
if(myOtherInfo.isNull())
myOtherInfo = "";
ll::String getOne = "";
myfile::Abc * abc = item->getOrig();
if(abc != NULL)
{
getOne = abc->getOne();
}
for(int i = 0 ; i < offset ; i++)
{
printf("found: %d", i);
}
if(abc != NULL)
abc->release();
int childCount = item->getChildCount();
offset++;
for(int i = 0 ; i < childCount ; i++)
getInfo(offset, item->getChild(i));
item->release();
}
http://www.nicemice.net/cexcept/ coś, co może być przydatne – anijhaw
Ten kod nie jest C, ansi lub w inny sposób. C nie ma operatora zasięgu '::'. –
C nie ma mechanizmu obsługi wyjątków. Wszystkie operacje na błędach są zwykle wykonywane z wartościami zwracanymi i zmienną errnum. Przy okazji, dobrze byłoby uzyskać szczegółowe komentarze ekspertów na temat prawidłowego postępowania z błędami w języku C :) – Kel