[D-runtime] win32 regression in exception handling

Jonathan M Davis jmdavisProg at gmx.com
Wed Jan 26 03:21:20 PST 2011


On Wednesday 26 January 2011 03:02:55 Don Clugston wrote:
> On 26 January 2011 11:17, Jonathan M Davis <jmdavisProg at gmx.com> wrote:
> > On Wednesday 26 January 2011 01:58:50 Don Clugston wrote:
> >> On 26 January 2011 10:32, Jonathan M Davis <jmdavisProg at gmx.com> wrote:
> >> > How else would an error be thrown?
> >> 
> >> In many cases, it's thrown by hardware. The exception object is
> >> created long after the throw occurred.
> >> There are also 'foreign' exceptions, which are thrown by (say) C++.
> >> 
> >> (I suspect that Linux DMD can't handle any of those -- but Windows DMD
> >> can).
> > 
> > So, what exactly about that makes it a problem that the file and line
> > number have default arguments? If it gives the arguments (like it pretty
> > much has to be doing),
> 
> No, it doesn't give the arguments. It has no way of knowing what they
> are (in fact, they may not even exist at all).
> 
> then it doesn't use the defaults, so they don't cause any problems
> 
> > there. And is it only file and line number which cause problems if they
> > have defaults, or is it everything (e.g. Throwable next)?
> 
> It's only file and line number that are a problem. next will just be null.
> The thing which you're maybe not understanding is that in these cases,
> the exception object is created when it is caught, not when it is
> thrown.

Well, I certainly I have no clue about what is really going on then, and it 
would probably take a fair bit of discussion and/or research for me to 
understand. Obviously, there's stuff going on here that's at a far lower level 
than I'm used to dealing with.

Regardless, is it all Throwables that have the problem, or is it just Throwable, 
Exception, and or Error? Throwable and Error really shouldn't be a problem, 
since programmers wouldn't normally be creating those (at most, they'd be 
creating objects derived from them), but you definitely lose something if 
Exception has the problem as well. And you _definitely_ lose something if _all_ 
Throwables have the problem. In any case, I need to know which ones are a 
problem if I'm going to fix them.

- Jonathan M Davis


More information about the D-runtime mailing list