35 lines
943 B
D
35 lines
943 B
D
|
|
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;
|
||
|
|
}
|