It seems that this behavior related to Fiber
class:
import std.stdio;
import core.thread;
void foo()
{
writeln("before");
try
{
throw new Exception("Exception");
}
catch (Throwable ex)
{
writeln(ex.msg);
}
writeln("after");
}
void main()
{
Fiber fiber = new Fiber(&foo);
fiber.call();
}