Create custom error in Swift
In Swift, you can create a custom error by defining an enumeration that conforms to the Error
protocol. Here is an example:
enum CustomError: Error {
case invalidInput
case outOfBounds
}
You can then throw this custom error in a function or method:
func processData(data: Any) throws {
guard let _ = data as? String else {
throw CustomError.invalidInput
}
// continue with processing...
}
And handle it in a do-catch
block:
do {
try processData(data: "some data")
} catch CustomError.invalidInput {
print("Invalid input provided")
} catch {
print("Other error: \(error)")
}
You can also use your custom error in a try?
or try!
statement, but it's recommended to handle it explicitly in a do-catch
block.
You can add a message property to the custom error enumeration to include additional information about the error. Here's an example:
enum CustomError: Error {
case invalidInput(message: String)
case outOfBounds(message: String)
}
You can then throw the custom error with a message:
func processData(data: Any) throws {
guard let _ = data as? String else {
throw CustomError.invalidInput(message: "Provided data is not a string")
}
// continue with processing...
}
And access the message in the catch block:
do {
try processData(data: 123)
} catch CustomError.invalidInput(let message) {
print("Invalid input provided: \(message)")
} catch {
print("Other error: \(error)")
}
This will print "Invalid input provided: Provided data is not a string"
You can also add more properties to your error object to store more information.