On 2/11/2014 6:35 PM, Sean Kelly wrote:
Throw a static exception (maybe even derived directly from Throwable),
similar to OutOfMemory, with a custom toString.  That should eliminate
the formatting you don't like and will prevent the trace from occurring
as well (see rt/deh.d in Druntime--the trace isn't run if you throw
typeid(t).init.ptr).

Hmm, my custom toString isn't being executed. Am I doing something wrong here? Same result if I inherit direct from Throwable instead of Exception.

class Fail : Exception
{
    private this()
    {
        super(null);
    }

private static Fail opCall(string msg, string file=__FILE__, int line=__LINE__)
    {
        auto f = cast(Fail) cast(void*) Fail.classinfo.init;

        f.msg  = msg;
        f.file = file;
        f.line = line;

        return f;
    }

    override string toString()
    {
    writeln("In Fail.toString()");
        return "someapp: ERROR: "~msg;
    }

}

void fail(string msg, string file=__FILE__, int line=__LINE__)
{
    throw Fail(msg, file, line);
}

void main()
{
    fail("Shit/fan collision detected.");
}

Output:
[email protected](106): Shit/fan collision detected.

Reply via email to