[OT] Apple introduces Swift as Objective-C sucessor

w0rp via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 3 14:09:49 PDT 2014


On Tuesday, 3 June 2014 at 20:26:52 UTC, Jacob Carlborg wrote:
> On 2014-06-03 01:01, deadalnix wrote:
>
>> How do they do error handling ?
>
> Objective-C does support exceptions, but libraries like Cocoa 
> avoids throwing exceptions and leave those to the user 
> (developer). Instead it usually returns a bool to indicate 
> success or failure and then provides an NSError instance via an 
> out parameter.

Writing messages which set errors like that was always weird.

// The pointer needs to use __autoreleasing so it captures the 
correct
// reference semantics.
- (BOOL) doSomethingWithError:(NSError* __autoreleasing * error) {
     // You must set to nil, as Objective C won't initialise to 
nil implicitly.
     NSError* otherError = nil;

     // Pass pointer to object in a C-like way.
     [foo doSomethingElseWithError:&otherError];

     // We have to check that the out param is not nil.
     if (error && otherError) {
         *error = otherError;

         // We return a boolean flag for those people who
         // don't capture the error itself but want a convenient
         // if([foo doSomethingWithError:nil] == NO)
         return NO;
     }

     return YES;
}

What does this look like if you use exceptions instead in a saner 
language?

void doSomething() {
     doSomethingElse();
}

Oh! Right!


More information about the Digitalmars-d mailing list