On Tuesday, 16 February 2021 at 00:39:33 UTC, Steven
Schveighoffer wrote:
On 2/15/21 4:04 PM, Jack wrote:
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)
https://dlang.org/phobos/std_exception.html#assumeWontThrow
import std.exception;
auto err = assumeWontThrow(th.toString, "oops, toString threw
something!");
-Steve
I didn't know about that function, I'll be using this one from
now. Thanks!
Adam and Ali thank you guys too, helpful always