Logo
Swift Basics
Swift BasicsError Handling

Error Handling

Error handling is a crucial aspect of robust software development. Swift provides a powerful set of tools to handle runtime errors effectively, using keywords like `try`, `catch`, `throw`, and `throws`. This section will guide you through the basics of error handling in Swift and how to use these keywords in various scenarios.

Defining Errors

In Swift, errors are represented by types that conform to the Error protocol. You can use enumerations to define errors for specific scenarios.

enum NetworkError: Error {
    case invalidURL
    case timeout
    case noData
}

Throwing Errors

You can throw errors to indicate that something unexpected has happened. To throw an error, you use the throw keyword followed by an instance of the error.

func fetchData(from url: String) throws {
    if url == "" {
        throw NetworkError.invalidURL
    }
    // Fetch data
}

Catching Errors

To catch an error, you mark a block of code with try, and then catch the error using a catch block.

do {
    try fetchData(from: "https://example.com")
} catch NetworkError.invalidURL {
    print("Invalid URL.")
} catch NetworkError.timeout {
    print("Request timed out.")
} catch {
    print("An unknown error occurred.")
}

Propagating Errors

If a function throws an error, you must mark it with throws and handle the error in the calling function.

func fetchDataWrapper() throws {
    try fetchData(from: "https://example.com")
}

Optional Try

Swift also provides try? to convert the result into an optional. If the function throws an error, the result is nil.

if let result = try? fetchData(from: "https://example.com") {
    print("Data fetched successfully.")
} else {
    print("Failed to fetch data.")
}

Conclusion

Error handling is essential for writing resilient code that can respond to problems at runtime. Swift's try, catch, throw, and throws keywords provide a robust, type-safe way to handle errors. By understanding how to use these tools effectively, you can improve the reliability and clarity of your Swift code.

Book a conversation with us for personalize training today!

Was this helpful?
Logo