title: What is the difference between Swift 2.0 do-try-catch and regular Java/C#/C++ exceptions
body: <p>It seems that Swift 2.0 has changed from traditional ObjC (NSError returning) and Swift 1.X (Success/Failure optionals) conventions of runtime error handling, to something that looks very similar to exception handling in languages like Java/C#/C++/etc.</p>
  
  <p>Apple has traditionally <a href="https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/ErrorHandling/ErrorHandling.html">emphasized use of <code>NSError</code> instead of throwing <code>NSException for runtime errors</code></a> (vs programmer errors), as <code>NSException</code> stack unwinding could cause memory leaks with default ObjC compiler settings.</p>
  
  <p>Now they have however devised something that looks very, very similar to traditional exceptions. My question is:</p>
  
  <p>Are there any real differences between Swift 2.0 error handling and traditional exception handling beside <em>nomenclature</em> (error vs exception) and <em>syntax</em> (do-catch, instead of try-catch, try used before method call, etc).</p>