[OT] Apple introduces Swift as Objective-C sucessor

Chris Cain via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 2 17:57:51 PDT 2014


On Monday, 2 June 2014 at 23:01:56 UTC, deadalnix wrote:
> On Monday, 2 June 2014 at 22:53:10 UTC, ponce wrote:
>> - no exceptions (!)
>
> How do they do error handling ?

I haven't read too much into Swift but languages with ADTs, 
pattern matching, and no exceptions can (and usually do) return 
using an ADT looking something like (pseudocode):

     adt Outcome(T) {
         Error(ErrorType e);
         Success(T result);
     }

and then for a "try catch" type block, you do things with switches

     switch(http.getResponse(someServer)) {
         case Success(r):
             // ... use r
         case Error(http.error.Http404(msg)):
             // handle the 404 error
         case Error(e):
             return Error(e); // Let the caller handle it
     }

Or some other similar construct. With macros you can easily write 
something that tries to get the outcome's success and if it 
can't, then it automagically returns the error for you, throwing 
the error to the calling function like you expect from 
exceptions. That said, if you're paying attention you'll see the 
similarity to checked exceptions...

So basically, those two features give you what is effectively 
exception handling, "nothrow", and so on. It's one of those 
really powerful language features with a lot of leverage that 
makes it easy to define constructs in the language instead of the 
compiler.


More information about the Digitalmars-d mailing list