http://d.puremagic.com/issues/show_bug.cgi?id=4644
--- Comment #4 from Andrej Mitrovic <[email protected]> 2010-08-15 14:34:21 PDT --- There we go, this should now work: import std.stream, std.stdio; void assertExceptionThrown(alias func, alias exc, T...)(T args) { auto funcName = __traits(identifier, func); try { func(args); } catch (exc e) { return; // Expected exception was thrown } catch (Exception e) { writeln(e); } writefln("Error: Call to %s did not throw %s", funcName, typeid(exc)); assert(0); } unittest { assertExceptionThrown!(willThrow, core.exception.AssertError)(4); } void willThrow(int i) { //~ assert(0); //~ throw new SeekException("Oops a file exploded!"); } void main() { } So, if you leave it like this it will complain about the expected exception not being thrown. If you uncomment the first line, it will run silently and return. I did add another gerenal Exception handler in the templated function, so when a completely different exception is thrown (in this case just uncomment the second line here) you will still be notified that the *expected* exception did not throw even though another one did. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
