(1) 创建一个playground文件。 (2) 定义一个枚举EnrollError,用来表示错误,错误形式有三种。 (3) 定义一个类VendingCourse使用throwing函数传递错误。 (4) 使用do-catch处理错误。用swift
时间: 2024-03-06 17:47:23 浏览: 103
创建一个调用ChatGPT API的网页的源码
好的,我可以回答这个问题。以下是 Swift 代码:
```
enum EnrollError: Error {
case invalidCourse
case invalidPayment
case courseFull
}
class VendingCourse {
var courseName: String
var courseFee: Int
var availableSeats: Int
init(name: String, fee: Int, seats: Int) {
courseName = name
courseFee = fee
availableSeats = seats
}
func enroll(name: String, payment: Int) throws {
guard payment == courseFee else {
throw EnrollError.invalidPayment
}
guard availableSeats > 0 else {
throw EnrollError.courseFull
}
print("Enrolling \(name) in \(courseName)")
availableSeats -= 1
}
}
let course = VendingCourse(name: "iOS Development", fee: 100, seats: 20)
do {
try course.enroll(name: "John", payment: 50)
} catch EnrollError.invalidPayment {
print("Invalid payment amount")
} catch EnrollError.courseFull {
print("Course is full")
} catch {
print("Unknown error occurred")
}
```
解释一下代码:我们首先定义了一个 `EnrollError` 枚举,用来表示错误的类型。在 `VendingCourse` 类中,我们定义了一个 `enroll` 函数,用来报名课程。如果报名时出现了错误,我们就使用 `throw` 关键字抛出对应的错误类型。在主程序中,我们使用 `do-catch` 语句来捕获可能出现的错误,并进行相应的处理。如果出现了未知的错误,我们就使用 `catch` 块来处理。
阅读全文