On May 7, 11 18:54, bearophile wrote:
Jonathan M Davis:

Just a reminder in case you didn't know, but there is a beta list (dmd-beta)
for posting and discussing beta releases of dmd prior to actual releases.

I am not yet a subscriber there. Here are some notes on 2.053beta.

This little program:

int foo(int x, int y) {
     return x / y;
}
void main() {
     foo(1, 0);
}


Produces the stack trace:

object.Error: Integer Divide by Zero
----------------
...\test.d(5): _Dmain
----------------


Oh, what flags have you passed to DMD? I can only get a "Floating point exception" on OS X, which is, well, expected as it's the CPU that catches the integer-divide-by-zero error, not the language. The stack trace can be read by the debugger.

#0  0x00001e61 in D1y3fooFiiZi ()
#1  0x00001e4a in _Dmain ()
#2  0x00012357 in D2rt6dmain24mainUiPPaZi7runMainMFZv ()
#3  0x00011f01 in D2rt6dmain24mainUiPPaZi7tryExecMFMDFZvZv ()
#4  0x0001239f in D2rt6dmain24mainUiPPaZi6runAllMFZv ()
#5  0x00011f01 in D2rt6dmain24mainUiPPaZi7tryExecMFMDFZvZv ()
#6  0x00011e9b in main ()

Throwing an exception manually does produce a stack trace up to 'foo', just like Python (which traps divide-by-zero in the language).

Reply via email to