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