[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