先写出正常运行时的代码:电脑开机后上课 分析电脑会出现的问题,如:蓝屏,冒烟 此时需要自定义两个“蓝屏,冒烟“”自定义异常,封装成对象。 蓝屏后,电脑重启,之后继续上课 电脑冒烟后,出现了老师的问题,不能上课了,可以先做练习,毕老师将问题抛给校长。此时抛出的问题不再是电脑冒烟,而应该是老师不能上课了 问题抛给校长后,校长catch后给出解决方案 效果如图:
时间: 2023-10-08 15:04:31 浏览: 27
```python
class BlueScreenError(Exception):
def __init__(self, message):
self.message = message
class SmokeError(Exception):
def __init__(self, message):
self.message = message
class TeacherUnableToTeachError(Exception):
def __init__(self, message):
self.message = message
class Computer:
def __init__(self):
self.is_on = False
def turn_on(self):
self.is_on = True
print("电脑已开机")
def turn_off(self):
self.is_on = False
print("电脑已关机")
def blue_screen(self):
self.turn_off()
raise BlueScreenError("电脑出现蓝屏错误")
def smoke(self):
self.turn_off()
raise SmokeError("电脑冒烟了")
class Teacher:
def __init__(self):
self.can_teach = True
def teach(self):
if self.can_teach:
print("上课中")
else:
raise TeacherUnableToTeachError("老师不能上课了")
class Principal:
def __init__(self):
pass
def solve_problem(self, problem):
if isinstance(problem, BlueScreenError):
print("蓝屏了,电脑已重启")
elif isinstance(problem, SmokeError):
print("电脑冒烟了,老师不能上课了,先做练习")
teacher = Teacher()
teacher.can_teach = False
raise TeacherUnableToTeachError("老师不能上课了")
computer = Computer()
try:
computer.turn_on()
# 上课中...
# 电脑出现蓝屏错误
# computer.blue_screen()
# 电脑冒烟了
computer.smoke()
except BlueScreenError as e:
print(e.message)
computer.turn_on()
# 蓝屏了,电脑已重启
except SmokeError as e:
print(e.message)
try:
principal = Principal()
principal.solve_problem(e)
except TeacherUnableToTeachError as e:
print(e.message)
```