module li_std_except_runme; import std.exception; import std.stdio; import li_std_except.Test; void main() { with (new Test()) { enforce(works!(Exception)(&throw_bad_exception)); enforce(works!(Exception)(&throw_domain_error)); enforce(works!(Exception)(&throw_exception)); enforce(works!(Exception)(&throw_invalid_argument)); enforce(works!(Exception)(&throw_length_error)); enforce(works!(Exception)(&throw_logic_error)); enforce(works!(Exception)(&throw_out_of_range)); enforce(works!(Exception)(&throw_overflow_error)); enforce(works!(Exception)(&throw_range_error)); enforce(works!(Exception)(&throw_runtime_error)); enforce(works!(Exception)(&throw_underflow_error)); } } bool works(alias E, F)(F f) { try { try { f(); } catch(E) { return true; } } catch(Exception e) { writefln( "Received wrong exception: %s", e.classinfo.name ); } return false; }