diff options
| author | C. Bess <cbess@company.com> | 2015-11-23 13:12:49 -0600 | 
|---|---|---|
| committer | C. Bess <cbess@company.com> | 2015-11-23 13:12:49 -0600 | 
| commit | 50fca171c53ca5c1de63c9a09ca457df0767f713 (patch) | |
| tree | 2cb3dafab43d92c8d17db9276508e2877fcf8585 | |
| parent | 8ca7f472eccdb116d597a2a8d888c188d797469e (diff) | |
- added error handling example
- add do-try-catch examples
- add throw example
| -rw-r--r-- | swift.html.markdown | 40 | 
1 files changed, 39 insertions, 1 deletions
| diff --git a/swift.html.markdown b/swift.html.markdown index df9c5092..33ff8451 100644 --- a/swift.html.markdown +++ b/swift.html.markdown @@ -346,6 +346,44 @@ let name = namesTable[1]  print("Name is \(name)") // Name is Them  // +// MARK: Error Handling +// + +// The `ErrorType` protocol is used when throwing errors to catch +enum MyError: ErrorType { +    case BadValue(msg: String) +    case ReallyBadValue(msg: String) +} + +// functions marked with `throws` must be called using `try` +func fakeFetch(value: Int) throws -> String { +    guard 7 == value else { +        throw MyError.ReallyBadValue(msg: "Some really bad value") +    } + +    return "test" +} + +func testTryStuff() { +    // assumes there will be no error thrown, otherwise a runtime exception is raised +    let _ = try! fakeFetch(7) + +    // if an error is thrown, then it proceeds, but if the value is nil +    // it also wraps every return value in an optional, even if its already optional +    let _ = try? fakeFetch(7) + +    do { +        // normal try operation that provides error handling via `catch` block +        try fakeFetch(1) +    } catch MyError.BadValue(let msg) { +        print("Error message: \(msg)") +    } catch { +        // must be exhaustive +    } +} +testTryStuff() + +//  // MARK: Classes  // @@ -559,7 +597,7 @@ class MyShape: Rect {  // `extension`s: Add extra functionality to an already existing type -// Square now "conforms" to the `Printable` protocol +// Square now "conforms" to the `CustomStringConvertible` protocol  extension Square: CustomStringConvertible {      var description: String {          return "Area: \(self.getArea()) - ID: \(self.identifier)" | 
