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 /swift.html.markdown | |
parent | 8ca7f472eccdb116d597a2a8d888c188d797469e (diff) |
- added error handling example
- add do-try-catch examples
- add throw example
Diffstat (limited to 'swift.html.markdown')
-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)" |