What should happen when the assert message expression throws?
JG
someone at somewhere.com
Sat Nov 19 11:49:18 UTC 2022
On Saturday, 19 November 2022 at 08:11:45 UTC, Dukc wrote:
> On Friday, 18 November 2022 at 12:36:14 UTC, RazvanN wrote:
>> What do you think? Is deprecating having an assert message
>> that may throw a severe restriction? Are there other rewrites
>> that I am missing?
>
> In my opinion the fix is clear. When the assertion handler at
> DRuntime determines the assertion has failed, it should call
> the error message generator (it is lazy IIRC) in a try/catch
> block. If the generator throws an exception, the error message
> of assertion failure should be something like `<FormatException
> thrown while writing error message>`.
>
> Should the error generation exception be the `.next` member of
> `AssertError`? Probably, but I'm not sure.
>
> If the message generator throws an unrecoverable error, that
> should probably still mask the assert error. If a `RangeError`
> masks `AssertError` it's unlikely to be a problem since neither
> is likely to be caught and at least in my mind they're
> essentially the same - a "bug detected" error.
I agree with what you are saying. It think it is essentially what
I wrote above but writing a better error message than I suggested.
More information about the Digitalmars-d
mailing list