If you are purely interested in the informational semantics of OOP-style exceptions, it's not clumsy in C at all. Just requires a skill at API design that for whatever reason most programmers - evenvery good ones - just lack.
If you're looking for the automatic propagation of exceptions up through the call chain, then yes it's clumsy, but it's not any better even in C++. Exceptions and low-level programming are not compatible. Writing "exception safe" code in C++ is damn near impossible at times, and they are easily the one big failure of C++'s design.