Silent error when using hashmap
Steven Schveighoffer via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 27 04:34:54 PDT 2017
On 7/26/17 10:30 PM, FatalCatharsis wrote:
> On Thursday, 27 July 2017 at 01:21:40 UTC, Steven Schveighoffer wrote:
>>> the writeln("start"); and writeln("end"); in main. This is what I
>>> meant by printing. These do not appear in the output. The programs
>>> starts and immediately ends without printing "start" and "end".
>>
>> try flushing the output. In some cases the output streams do not flush
>> on newlines.
>>
>>> I did not put an output in the exception handler of the WndProc
>>> because writeln can throw and the function is marked nothrow. All I
>>> as trying to do there was get it to recover.
>>
>> Just surround writeln with try/catch(Exception), should work.
>>
>> You could also just use good old printf.
>>
>
> This appears to be it. When an error is thrown, stdout does not flush.
> When I put stdout.flush() immediately after the writeln("start") at the
> beginning it is printed correctly. However, when I try to catch the
> error and then do stdout.flush() in main, it does not print.
>
> Do you know of a way to make D always flush the output buffer when an
> error is thrown?
Are you sure the error is being caught? I thought the event loop was run
in a separate thread. Not sure, because I don't do windows development.
Try catching the error right in the event handler.
-Steve
More information about the Digitalmars-d
mailing list