how to make this function nothrow?

Jack jckj33 at gmail.com
Mon Feb 15 21:04:50 UTC 2021


I have to make my function nothrow because the function that 
calls it (not written by me) is nothrow. So I need to wrap my 
code in a try-catch() but how will I report the error message, if 
the toString() from Throwable isn't nothrow? how do I get out 
this circular dependence?


void f() nothrow
{
   import std.conv : to;

     try
     {
         // do something
     }
     catch(Throwable th)
     {
     	auto err = th.toString;
     }
}

I can't use err variable, it result in error:

function object.Throwable.toString is not nothrow

obviously, insert a try-catch() within catch() is a circular 
dependence and doesn't solve the problem either (even if it, I 
think it would be quite ugly)


More information about the Digitalmars-d-learn mailing list