У меня есть код C, с которым я работаю, и я нахожу ошибки, когда код работает, но мало информации о том, как сделать правильный try/catch (как на C# или C++).ANSI C эквивалент попытки/улова?
Например, в C++ я просто хотел бы сделать:
try{
//some stuff
}
catch(...)
{
//handle error
}
но в ANSI C, я немного потерял. Я пробовал некоторые онлайн-поиски, но я не вижу достаточной информации о том, как это произошло/фигура. Я бы спросил здесь, если кто-то может указать мне в правильном направлении.
Вот код, с которым я работаю (довольно простой, рекурсивный метод) и хотел бы обернуть с помощью try/catch (или эквивалентной структуры обработки ошибок).
Однако мой основной вопрос заключается в том, как сделать попытку/улов в ANSI C ... реализация/пример не обязательно должна быть рекурсивной.
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/ что-то, что может быть полезно – anijhaw
Этот код не является C, ansi или иным. C не имеет оператора '::' scope. –
C не имеет механизма обработки исключений. Вся обработка ошибок обычно выполняется с возвращаемыми значениями и переменной errnum. Кстати, было бы неплохо получить некоторые подробные комментарии экспертов о том, как обработка ошибок выполняется правильно в C :) – Kel