how to make this function nothrow?
Jack
jckj33 at gmail.com
Mon Feb 22 21:44:47 UTC 2021
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
More information about the Digitalmars-d-learn
mailing list