Why writeln can't be converted to nothrow with just catching of StdioException
Mike Parker
aldacron at gmail.com
Mon Feb 21 11:21:52 UTC 2022
On Monday, 21 February 2022 at 11:07:55 UTC, Basile B. wrote:
>
> Yeah there must be another one then. Something actionnable is
> the documentation.
This has nothing to do with which exceptions types a function
throws. The compiler doesn't dig into that. You have to catch
`Exception`.
```D
import std.stdio;
class MyException : Exception {
this(string msg) { super(msg); }
}
void throwing(int x) {
if(x > 2) throw new MyException("Derp!");
else writeln(x);
}
void noThrowing() nothrow {
try {
throwing(10);
}
catch(MyException me) {}
}
void main()
{
noThrowing();
}
```
```
onlineapp.d(14): Error: function `onlineapp.throwing` is not
`nothrow`
onlineapp.d(12): Error: `nothrow` function `onlineapp.noThrowing`
may throw
```
More information about the Digitalmars-d-learn
mailing list