News for hackers. Stuff that matters.
Re:Exceptions in C with longjmp and setjmp by Dan_Korn on Thursday September 17, 2015 @08:24PM (#10236886)
Unlike with real C++ exceptions, the "finally" block is not entered if a "return" is used inside the "catch" block. And, of course, in this system, exceptions can be caught only in the function from which they are thrown, unlike real C++ exceptions, which can be caught anywhere in the call stack. But the solution provided here is good, and is probably the best possible one for C.
Re:Exceptions in C with longjmp and setjmp by notacoward on Thursday September 17, 2015 @03:16PM (#10235457)
If you ever want to have some "fun" try testing an implementation of this. Like the authors and many others, I've also gone down this road of implementing exceptions using longjmp/setjmp. Writing the code was not nearly as hard as writing tests for every permutation of ignoring, catching, rethrowing, finally'ing, and so on through multiple levels. Then the really good part: seeing how your implementation interacts with ucontext-based lightweight threads. I'll leave that one as an exercise for the reader, because I'm evil.