Python面向对象编程-自定义异常使用(一) 全球新资讯
发布时间:2023-04-22 10:44:55
来源:腾讯云
(资料图片)
自定义异常可用于多种目的。
定义文件时,当文件的格式不正确时,我们可以抛出自定义异常来指示错误。
在编写网络应用程序时,如果网络请求失败,我们可以抛出自定义异常来指示错误。在编写数据库应用程序时,如果数据库连接失败,我们可以抛出自定义异常来指示错误。在编写游戏时,如果玩家尝试在不允许的情况下执行某个操作,我们可以抛出自定义异常来指示错误。下面是一个使用自定义异常的示例,它演示了如何在游戏中处理玩家错误操作:
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
方法,并在出现异常时捕获和处理异常。在异常处理程序中,我们将打印错误消息,告诉用户出现了什么错误。
标签:
AD
更多相关文章
- Python面向对象编程-自定义异常使用
- 霍山县大化坪镇: 茶乡执法在行动,
- 两亭超限站与两亭交警中队联勤联动
- 全球新动态:凤县行政审批服务局:
- 吉林通化:普法宣传助力环境保护
- 全球微资讯!加快工业互联网主导的
- 戈壁滩上建设施农业基地_世界简讯
- 江西提升金融供给质效 引导更多金
- 世界今热点:对股市造谣者“零容忍
- 壮乡广西邀客入桂“潮玩三月三”
- 河北武安:书香伴成长 全球观天下
- 收评:沪指跌近2%险守3300点 两市
- 中国旅游出行发展大会第三站走进昆
- 恩比德因右膝扭伤缺席G4战篮网 最
- 快船官方:伦纳德确定缺席系列赛G4-
- 掘金官方:约基奇今日对阵森林狼G3
- 快来围观!2023年海南“十佳”旅游
- 为您服务丨普陀图书馆周末有两场活
- 焦点热门:通胀破100%仍未减速!这一
- 经济日报:对股市造谣者“零容忍”
- 天天速读:智通ADR统计|4月22日
- 【天天聚看点】恒指夜期收盘(4.22)
- 我省 “畜”势勃发 打造现代化“
- 营造高效透明的政务环境-环球热点评
- 海西生态旅游推介会在温州举办|讯息
- 浙江援青:促文化交流 助产业发展
- 全球头条:都兰:一季度农业农村经
- 快消息!海西:多措并举支持经营主
- 【世界时快讯】增加小微企业信贷供
- 网红“爱情公路”为乡村振兴插上翅