Python面向对象编程-自定义异常使用(一)
来源:腾讯云 时间:
2023-04-23 01:55:01
(相关资料图)
自定义异常可用于多种目的。
定义文件时,当文件的格式不正确时,我们可以抛出自定义异常来指示错误。
在编写网络应用程序时,如果网络请求失败,我们可以抛出自定义异常来指示错误。在编写数据库应用程序时,如果数据库连接失败,我们可以抛出自定义异常来指示错误。在编写游戏时,如果玩家尝试在不允许的情况下执行某个操作,我们可以抛出自定义异常来指示错误。下面是一个使用自定义异常的示例,它演示了如何在游戏中处理玩家错误操作:
class InvalidMoveError(Exception): def __init__(self, message): self.message = messageclass Game: def __init__(self): self.board = [["", "", ""] for i in range(3)] self.current_player = "X" def display_board(self): for row in self.board: print(row) def make_move(self, row, col): if row < 0 or row > 2 or col < 0 or col > 2: raise InvalidMoveError("Invalid move. Please choose a row and column between 0 and 2.") if self.board[row][col] != "": raise InvalidMoveError("Invalid move. That square is already taken.") self.board[row][col] = self.current_player if self.current_player == "X": self.current_player = "O" else: self.current_player = "X" def is_game_over(self): for i in range(3): if self.board[i][0] == self.board[i][1] == self.board[i][2] != "": return True if self.board[0][i] == self.board[1][i] == self.board[2][i] != "": return True if self.board[0][0] == self.board[1][1] == self.board[2][2] != "": return True if self.board[0][2] == self.board[1][1] == self.board[2][0] != "": return True return Falsegame = Game()while not game.is_game_over(): game.display_board() row = int(input("Enter row (0-2): ")) col = int(input("Enter column (0-2): ")) try: game.make_move(row, col) except InvalidMoveError as e: print("Error:", e.message)game.display_board()print("Game over!")上面的示例中,我们定义了一个名为 Game的游戏类,用于处理棋盘和游戏规则。我们还定义了一个名为 InvalidMoveError的自定义异常,用于处理玩家的无效移动。
在 make_move方法中,如果玩家选择了无效的行或列,则抛出 InvalidMoveError。如果玩家选择了已经被占用的方格,则也会抛出 InvalidMoveError。在 while循环中,我们不断调用 make_move方法,并在出现异常时捕获和处理异常。在异常处理程序中,我们将打印错误消息,告诉用户出现了什么错误。
关键词:
为您推荐
-
下面是一个完整的示例,演示如何使用SpringCloudBus在微服务之间传递消息。该示例包含两个微服务,一个是消
23-04-22
-
《死亡岛2》即将于今日推出,根据外媒DSOGaming透露,这款游戏也使用了Denuvo防篡改技术。在DSOGaming进行
23-04-22
快讯
- 全球关注:天马新材(838971)12月28日游资资金净买入4.20万元
- 快消息!力星股份董秘回复:截至2022年12月20日,公司股东人数为15943
- 世界焦点!平罗:跑出护航发展“加速度”
- 世界消息!大华股份(002236)股东傅利泉质押1473万股,占总股本0.49%
- 全球消息!盈峰环境(000967):独立董事提名人声明(张宇)
- 全球时讯:《新科学家》:2023年这些科技故事或将发生
- 最新消息:外汇市场最新行情走势展望:澳元/美元寻求反转突破0.6720
- 每日速讯:面对司马南的发难,张文宏为何一言不发?
- 当前播报:涨停雷达:风电个股异动 天顺风能触及涨停
- 当前要闻:经济日报:把恢复和扩大消费摆在优先位置
