按照以下步骤实现错误处理,具体如下: (1) 创建一个playground文件。 (2) 定义一个枚举EnrollError,用来表示错误,错误形式有三种。 (3) 定义一个类VendingCourse使用throwing函数传递错误。 (4) 使用do-catch处理错误。
时间: 2024-03-05 10:53:33 浏览: 97
以下是按照要求实现的代码:
```swift
// Step 2: 定义一个枚举EnrollError,用来表示错误,错误形式有三种
enum EnrollError: Error {
case alreadyEnrolled
case noEnoughQuota
case networkError
}
// Step 3: 定义一个类VendingCourse使用throwing函数传递错误
class VendingCourse {
var quota: Int
var enrolled: Bool
init(quota: Int, enrolled: Bool) {
self.quota = quota
self.enrolled = enrolled
}
func enroll() throws {
if enrolled {
throw EnrollError.alreadyEnrolled
}
if quota <= 0 {
throw EnrollError.noEnoughQuota
}
if Int.random(in: 0...1) == 0 {
throw EnrollError.networkError
}
enrolled = true
quota -= 1
}
}
// Step 4: 使用do-catch处理错误
let course = VendingCourse(quota: 3, enrolled: false)
do {
try course.enroll()
print("报名成功!")
} catch EnrollError.alreadyEnrolled {
print("您已经报名过了!")
} catch EnrollError.noEnoughQuota {
print("名额已满,请等候下一轮招生!")
} catch EnrollError.networkError {
print("网络错误,请重试!")
} catch {
print("未知错误,请联系管理员!")
}
```
这段代码中,我们首先定义了一个枚举类型 EnrollError,用于表示报名时可能出现的错误。然后定义了一个 VendingCourse 类,其中的 enroll() 方法会抛出 EnrollError 中的三种错误之一。最后,在主函数中使用 do-catch 语句捕获可能抛出的错误,并分别处理不同种类的错误。
阅读全文