scope(failure): get exception

Jonathan M Davis jmdavisProg at gmx.com
Fri Oct 26 14:56:56 PDT 2012


On Friday, October 26, 2012 21:37:00 Justin Whear wrote:
> My understanding is that scope(failure) simply lowers to the catch block
> of a try..catch, so there's no implementation obstacle to making the
> exception available. Are there known syntax or correctness obstacles to
> allowing something like this:
> 
> scope(failure)(Exception ex) writeln(ex.msg);

Yes. It lowers to a try-catch block, but that's effectively an implementation 
detail. As it stands, technically speaking, a compiler could probably 
implement it without any lowering whatsoever (I don't think that the spec says 
anything about how it's implemented). But even if the compiler has to use 
lowering, the main problem with your suggestion is that in complicates how 
scope statements work, since then it's only going to be run if the exception 
type being caught matches what was being thrown, whereas right now 
scope(failure) statements run on all exceptions regardless. And scope 
statements aren't really meant for exception handling. Rather, they're 
intended for providing a clean means of making code exception-safe. So, I 
suspect that what you suggest would be rejected, but I don't know. You can 
certainly create an enhancement request for it if you want to:

http://d.puremagic.com/issues

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list