Я не знаю ничего про SDL, но раз уж ты пишешь на c++, то почему делаешь глобальные функции и переменные вместо классов? Например, переменную initialized можно было бы сделать private членом. По поводу исключений - если ты их используешь, то почему не пытаешься перехватывать?