blob: 8cb43b8236d7a7af8bab3684c67ef3ad92110dd9 [file] [log] [blame]
import core.exception;
import core.thread;
__gshared bool caught;
void main()
{
Thread t = new MyThread(&entry);
t.start();
t.join();
assert(caught);
}
class MyThread : Thread
{
this( void function() fn, size_t sz = 0 ) @safe pure nothrow @nogc
{
super(fn, sz);
}
override void filterCaughtThrowable(ref Throwable t) @system nothrow
{
if (auto t2 = cast(AssertError) t)
{
if (t2.message == "Hey!")
{
caught = true;
t = null;
return;
}
}
super.filterCaughtThrowable(t);
}
}
void entry()
{
throw new AssertError("Hey!");
}