Re: Well, this article'll cause some arguments, eh?
Actually my favourite if I need a goto style fatal error handler is setjmp()/longjmp() and friends.
No matter where you are, or how deeply nested, you end up in a high level error handler that can examine the state of the machine, decide what to do, and do it.
Better still...
if(err=setjmp(Env))
DoErrorStuff(err);
...means that ALL your fatal error handling is well away from the code that is doing the real business of the program.