core.thread.Thread.start is marked as "nothrow" but documentation says it throws
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Jan 23 04:01:45 PST 2016
On 23.01.2016 12:44, tcak wrote:
> https://dlang.org/phobos/core_thread.html#.Thread
>
> final nothrow Thread.start()
>
> Looking at the code, no "throw new ..." is seen, but the function
> "onThreadError" is called
> which has "throw" in it.
>
> Most weird thing is that "onThreadError" function is marked as "nothrow"
> but it still throws.
>
> I would think that yes, maybe the compiler might not be able to see it
> because throw is found
> in another function, but how come "onThreadError" throws with nothrow.
onThreadError [1] throws a ThreadError [2] which derives from Error, as
the name suggests. nothrow functions may throw Errors, because Errors
are considered a way of force-exiting the program. Errors are not
supposed to be caught.
So onThreadError is fine. And if Thread.start can actually only throw
ThreadError, and not ThreadException, then that one is ok too, but the
documentation is wrong and should be fixed.
[1]
https://github.com/D-Programming-Language/druntime/blob/33f1962747801be35a48f4875c909e16747fdcce/src/core/thread.d#L2972
[2]
https://github.com/D-Programming-Language/druntime/blob/33f1962747801be35a48f4875c909e16747fdcce/src/core/thread.d#L88
More information about the Digitalmars-d-learn
mailing list