Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
import Foundation enum ParseError: Error { case invalidInput(String) case outOfRange(value: Int, min: Int, max: Int) } func parseAge(_ input: String) throws -> Int { guard let age = Int(input) else { throw ParseError.invalidInput("'\(input)' is not a number") } guard (0...150).contains(age) else { throw ParseError.outOfRange(value: age, min: 0, max: 150) } return age } // do-catch do { let age = try parseAge("25") print("Age: \(age)") } catch ParseError.invalidInput(let msg) { print("Invalid: \(msg)") } catch ParseError.outOfRange(let val, let min, let max) { print("\(val) must be between \(min) and \(max)") } catch { print("Unexpected error: \(error)") } // try? - returns optional let age1 = try? parseAge("abc") // nil let age2 = try? parseAge("30") // Optional(30) // Propagating errors func validateUser(name: String, ageStr: String) throws -> String { let age = try parseAge(ageStr) return "\(name) is \(age) years old" }
Result
Open