module throw_exception_runme; import throw_exception.Foo; void main() { test!("test_int"); test!("test_msg"); test!("test_cls"); test!("test_cls_ptr"); test!("test_cls_ref"); test!("test_cls_td"); test!("test_cls_ptr_td"); test!("test_cls_ref_td"); test!("test_array"); test!("test_enum"); } void test(string methodName)() { auto foo = new Foo(); bool didntThrow; try { mixin("foo." ~ methodName ~ "();"); didntThrow = true; } catch (Exception) {} if (didntThrow) { throw new Exception(methodName ~ " failed"); } }