What is the exact meaning of 'nothrow'?
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Jun 10 17:27:36 PDT 2015
On 06/10/2015 05:06 PM, Yuxuan Shui wrote:
> I want to know exactly what is considered to be 'throw'.
>
> I'm able to use dynamic arrays (which can throw 'Range violation') and
> asserts in a nothrow function. Shouldn't those be considered 'throw'?
Yes, the documentation is minimal: :)
http://dlang.org/function.html#nothrow-functions
It says "Nothrow functions do not throw any exceptions derived from
class Exception."
I have more information here but the language is misleading:
http://ddili.org/ders/d.en/functions_more.html#ix_functions_more.nothrow
I am going to add something like the following to clarify:
"Note: Remember that it is not recommended to catch Error nor its base
class Throwable. What I mean by "any exception" here is "any exception
that is defined under the Exception hierarchy." A nothrow function can
still emit exceptions that are under the Error hierarchy, which
represents irrecoverable error conditions that should preclude the
program from continuing its execution."
In other words, nothrow means "does not emit Exception, it can still
emit Error."
Ali
More information about the Digitalmars-d-learn
mailing list