Errors happen; during programming, these errors may be due to your own code behaving in unexpected ways, or due to unexpected information or behavior from external systems. When these errors happen, it's important to handle them appropriately; indeed, good error handling can separate a good app from a great app.
Swift provides a deliberate and flexible pattern for handling errors, helpfully allowing specific errors to be cascaded through a complex system.