how to make this function nothrow?
Steven Schveighoffer
schveiguy at gmail.com
Tue Feb 16 00:39:33 UTC 2021
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
More information about the Digitalmars-d-learn
mailing list