collectException and nothrow
Casey via Digitalmars-d
digitalmars-d at puremagic.com
Sun Nov 9 19:34:59 PST 2014
> Are you looking at the documentation or attempting to compile
> code?
> collectException isn't going to be marked as nothrow, because
> it can only be
> nothrow if it's collectException!Exception (which _is_ the
> default), because
> it can only be nothrow if no Exceptions (be they Exception or
> derived from
> Exception) can escape the function - e.g.
> collectException!MyException can't
> be nothrow - and neither can stuff like collectException!Error
> or
> collectException!AssertError. collectException _should_ be
> inferred as
> nothrow so long as it's collectException!Exception (and
> collectException!Throwable should work as well, though I don't
> know if it
> currently does).
>
> If I compile this code on my machine using 2.066.1:
>
> import std.exception;
> import std.stdio;
>
> void func()
> {
> throw new Exception("hello");
> }
>
> void main() nothrow
> {
> auto e = collectException(func());
> }
>
> it compiles just fine. So, it seems like nothrow is being
> properly inferred
> for collectException, and I don't know what you're doing that
> isn't working.
> Please provide a code snippet that you think should work but
> doesn't.
>
> - Jonathan M Davis
>
>
> P.S. In the future, please post questions like this is D.learn.
> The main
> newsgroup/mailing list/forum is for discussing the language
> itself, not for
> asking questions about how to use it or how it works (or
> doesn't work).
>
> - Jonathan M Davis
First, sorry about that. I must have glossed over the d.learn
forum.
Second, I actually did compile and run it and got the failure.
However, reading your response, I'm not wondering if I did make a
mistake. In fact, I just tried it again and it did work.
Regardless, what you said makes sense. Thanks.
More information about the Digitalmars-d
mailing list