import SwiftUI
enum ConversionError: Error {
case invalidNumber
}
struct ErrorHandlingDemoView: View {
@State private var userInput = ""
@State private var resultMessage = ""
var body: some View {
VStack(spacing: 20) {
Text("Error Handling Demo")
.font(.title)
TextField("Enter a number", text: $userInput)
.textFieldStyle(RoundedBorderTextFieldStyle())
.keyboardType(.numberPad)
.padding(.horizontal)
Button("Convert") {
do {
let number = try convertToInt(userInput)
resultMessage = "Valid number: \(number)"
} catch {
resultMessage = "Error: Invalid number"
}
}
.buttonStyle(.borderedProminent)
Text("Result: \(resultMessage)")
.padding()
Spacer()
}
.padding()
}
func convertToInt(_ input: String) throws -> Int {
if let number = Int(input) {
return number
} else {
throw ConversionError.invalidNumber
}
}
}
This app screen uses a TextField to get user input as a string. The convertToInt function tries to convert the string to an integer. If it fails, it throws a custom error ConversionError.invalidNumber.
When the user taps the Convert button, the app uses a do-try-catch block to call convertToInt. If conversion succeeds, it updates the result message with the valid number. If it fails, it catches the error and shows an error message.
This demonstrates how to handle errors gracefully in Swift using try, catch, and throw.