Glad and WGL

Josh Phillips via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jan 13 18:45:49 PST 2016


On Thursday, 14 January 2016 at 02:16:40 UTC, userABCabc123 wrote:
> On Wednesday, 13 January 2016 at 19:05:30 UTC, Josh Phillips 
> wrote:
>> Oh wow that's easy. They should really make that more clear in 
>> the dlang reference. They way it sounds there made me think 
>> that if a function doesn't throw any errors it automatically 
>> is 'nothrow'
>
> No, because actually you can have a function that uses 
> sub-functions that throw, but marked explicitly nothrow, 
> because it hides the stuff under the carpet.
>
> ---
> void bar()
> {
>     throw new Exception("kaboom");
> }
>
> void foo() nothrow
> {
>   try {bar;}
>   catch {/*under the carpet*/}
> }
> ---
>
> and that will compile.

Ok? I'm not sure what you are saying no to and I understand this. 
It makes sense because foo catches bar's error and doesn't throw 
it up and further. I was just saying that the reference here 
https://dlang.org/spec/function.html was not all that clear since 
the section entitled nothrow merely states:

"Nothrow functions do not throw any exceptions derived from class 
Exception.
Nothrow functions are covariant with throwing ones."

A deeper search on the page made me realize that there are more 
examples later which clarify how to declare a "nothrow" function 
however I didn't bother looking deeper at the time since the main 
section for nothrows gave no indication that I should.


More information about the Digitalmars-d-learn mailing list