struct Throws(T : Exception)
struct ThrowsInclude(alias Func_)
class MyExcept : Exception
mixin basicExceptionCtors;
template ThrownTypes(alias Func)
enum isThrowsUDA(UDA) = isInstanceOf!(Throws, UDA) || isInstanceOf!(ThrowsInclude, UDA);
alias UDAs = __traits(getAttributes, Func);
alias ThrowsUDAs = Filter!(isThrowsUDA, UDAs);
static if(isInstanceOf!(Throws, UDA))
alias Mapper = UDA.ThrowT;
alias Mapper = ThrownTypes!(UDA.Func);
alias ThrownTypes = staticMap!(Mapper, ThrowsUDAs);
pragma(msg, ThrownTypes!funcA);