ANSI C equivalente de try / catch?

Tengo un código C con el que estoy trabajando, y encuentro errores cuando el código se está ejecutando, pero tengo poca información sobre cómo hacer un try / catch adecuado (como en C # o C ++).

Por ejemplo, en C ++ solo haría:

try{
//some stuff
}
catch(...)
{
//handle error
}

pero en ANSI C estoy un poco perdido. Intenté algunas búsquedas en línea, pero no veo suficiente información sobre cómo hacerlo posible / pensé en preguntar aquí en caso de que alguien pueda señalarme en la dirección correcta.

Aquí está el código con el que estoy trabajando (método bastante simple y recursivo) y me gustaría ajustarlo con try / catch (o una estructura equivalente de manejo de errores).

Sin embargo, mi pregunta principal es simplemente cómo hacer un try / catch en ANSI C ... la implementación / ejemplo no tiene que ser recursiva.

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();
}

Respuestas a la pregunta(8)

Su respuesta a la pregunta