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).