swift按照以下步骤实现错误处理,具体如下: (1) 创建一个playground文件。 (2) 定义一个枚举EnrollError,用来表示错误,错误形式有三种。 (3) 定义一个类VendingCourse使用throwing函数传递错误。 (4) 使用do-catch处理错误。
时间: 2024-03-06 11:47:39 浏览: 62
好的,按照您所说的步骤,我们可以这样实现错误处理:
1. 在 Xcode 中创建一个 Playground 文件;
2. 定义一个枚举 `EnrollError`,用来表示错误,错误形式有三种。具体代码如下:
```swift
enum EnrollError: Error {
case courseIsFull
case invalidCourse
case studentIsNotQualified
}
```
这里定义了三个错误类型:课程已满、无效课程和学生不符合要求。
3. 定义一个类 `VendingCourse`,使用 `throwing` 函数传递错误。具体代码如下:
```swift
class VendingCourse {
var name: String
var capacity: Int
var students: [String]
var qualifiedGrade: Int
init(name: String, capacity: Int, qualifiedGrade: Int) {
self.name = name
self.capacity = capacity
self.students = []
self.qualifiedGrade = qualifiedGrade
}
func enroll(_ studentName: String, grade: Int) throws {
guard grade >= qualifiedGrade else {
throw EnrollError.studentIsNotQualified
}
guard students.count < capacity else {
throw EnrollError.courseIsFull
}
students.append(studentName)
}
}
```
这里定义了一个课程类 `VendingCourse`,包含课程名称、容量、学生列表和合格分数线。`enroll` 方法用于学生报名,需要传入学生姓名和分数,如果学生不符合要求或课程已满,会抛出相应的错误。
4. 使用 `do-catch` 处理错误。具体代码如下:
```swift
let course = VendingCourse(name: "Swift 101", capacity: 2, qualifiedGrade: 80)
do {
try course.enroll("Alice", grade: 90)
try course.enroll("Bob", grade: 85)
try course.enroll("Charlie", grade: 70)
} catch EnrollError.courseIsFull {
print("Course is full.")
} catch EnrollError.invalidCourse {
print("Invalid course.")
} catch EnrollError.studentIsNotQualified {
print("Student is not qualified.")
} catch {
print("Unknown error.")
}
```
这里创建了一个容量为 2、合格分数线为 80 的课程对象,然后依次让 Alice、Bob 和 Charlie 报名。由于容量只有 2,所以第三次报名会触发 `courseIsFull` 错误。通过 `do-catch` 处理错误,打印相应的错误信息。
希望能够帮助到您,有不懂的地方可以随时问我哦。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)