Handling Errors by Sticking Your Head in the Sand
You have seen that every call to a function that might throw an error must be marked with try
and that any call with try
must either be inside a do/catch
block or inside a function that itself is marked with throws
.
These rules work together to make sure you are handling any potential errors.
Try modifying your evaluate(_:) function to break one of these rules.
Listing 20.21 Modifying evaluate(_:)
illegally
... func evaluate(_ input: String) { print("Evaluating: \(input)") let lexer = Lexer(input: input) let tokens = try lexer.lex() do {let tokens = try lexer.lex()print("Lexer output: \(tokens)") let parser = Parser(tokens: tokens) let result = try parser.parse() print("Parser ...
Get Swift Programming: The Big Nerd Ranch Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.