From: Ian McCulloch (ianmcc_at_[hidden])
Date: 2005-10-10 15:12:56
Eric Niebler wrote:
> Rob Stewart wrote:
>> That way a debug build asserts, which likely gets a core dump,
>> and a release build throws an exception. If the exception is a
>> type that is never caught in the code except in main(), then
>> main() can report the problem and exit. That gives a clean exit
>> with a diagnostic in release builds, while giving the opportunity
>> for post mortem debugging in debug builds.
> No. An assert should not throw, not in release mode, not ever. If an
> assert fails, your program is now in an invalid state. Throwing an
> exception potentially causes lots of code to execute that is potentially
> dangerous. The correct thing to do is dump core immediately. Maybe try
> to save user data into into a separate location, taking care not to
> overwrite the last-known-good with potentially corrupt data, but that's
> it. Assert != exception.
Fine. But why not use an exception as part of the mechanism for saving some
(hopefully) recoverable data?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk