On that web page he says that "the lack of garbage collection makes C++ exceptions ... inherently defective." I'm not sure I agree with that. I think the opposite is more true. When you're using garbage collection, you can't rely on destructors to release resources (notably non-memory resources) when exceptions occur. In C# for example, the solution is supposed to be the 'using' statment, but that's only useful in the context of a function. It doesn't help you when you want class A to be a member of another class B and it's lifetime to be governed by the lifetime of class B.

The argument on that web page is that exceptions are defective because writing exception-safe code is hard. Well, to me, writing code that uses return value error codes and diligently handles all of them is just as hard or harder. Especially when you have many layers. And it's more likely that you can miss one and your program will blindly continue to execute as if everything's OK.

Jim

Reply via email to