On 2015-03-26 12:23, Andrej Mitrovic via Digitalmars-d wrote:
One idea I'd like to see is to enhance scope(failure) to allow it to
catch a specific type of exception which would allow us to e.g. log
the exception message and potentially re-throw the exception. All of
this without having to nest our code in try/catch statements.
Sounds like you want a catch statement without being tied to a try
statement. Something like this exists in Ruby:
With begin/end:
def foo
begin
raise 'foo'
rescue Exception => E
p e
end
end
Without:
def foo
raise 'foo'
rescue Exception => E // tied to the function scope
p e
end
In the above example the "rescue" is tied to the function scope.
Something similar could be supported in D:
void foo ()
{
throw new Exception("foo");
catch (Exception e) // tied to the function scope
writeln(e);
}
Or possibly tie it to the most enclosing scope:
void foo ()
{
{
throw new Exception("foo");
catch (Exception e) // tied to the scope
writeln(e);
}
}
I wouldn't mind if this was supported.
--
/Jacob Carlborg