On Thursday, 11 June 2015 at 00:27:36 UTC, Ali Çehreli wrote:
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

Thanks, that clear things up.

Reply via email to