On Tuesday, 27 June 2017 at 00:10:32 UTC, jag wrote:
On Monday, 26 June 2017 at 21:53:57 UTC, John Colvin wrote:

I wonder what could be done with something like this:

void foo(int a)
{
    if (a > 0)
        throw new BlahException("blah");
    throw new BloopException("bloop");
}

unittest
{
    // NEW FEATURE HERE
    alias Exceptions = __traits(thrownTypes, foo);
    static assert (staticIndexOf!(BlahException, Exceptions)
>= 0);
    static assert (staticIndexOf!(BloopException, Exceptions)
>= 0);
}

I'm imagining one could use that to do quite a lot of what checked exceptions provide.

So the only way for a programmer to know what exceptions can be thrown by a method is by running the code? In Java this is known while you are writing the code, even before you compile the code. And the compiler verifies that you are handling or passing on all possible exceptions. This is important.

No, that's completely the opposite of what I was suggesting. It would all be static (i.e. compile-time) introspection.

Reply via email to