(资料图)
自定义异常可用于多种目的。
定义文件时,当文件的格式不正确时,我们可以抛出自定义异常来指示错误。
在编写网络应用程序时,如果网络请求失败,我们可以抛出自定义异常来指示错误。在编写数据库应用程序时,如果数据库连接失败,我们可以抛出自定义异常来指示错误。在编写游戏时,如果玩家尝试在不允许的情况下执行某个操作,我们可以抛出自定义异常来指示错误。下面是一个使用自定义异常的示例,它演示了如何在游戏中处理玩家错误操作:
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
方法,并在出现异常时捕获和处理异常。在异常处理程序中,我们将打印错误消息,告诉用户出现了什么错误。
关键词:
Python面向对象编程-自定义异常使用(一)|今日视点
当前热文:中国的门阀是怎么消失的?这三个人居功至伟,让中国告别士族时代
活动“快手2023CFPL春季总决赛” 天天观察
天天新资讯:立花訚千代和丰臣秀吉_立花訚千代
全球实时:孔俊卿
焦点快播:关于元宵节的古诗四句
背靠红杉等机构,艾柯医疗闯关科创板IPO
张坤持仓最新动向:连续两季增持贵州茅台
赴英招医生 医管局派发百聘书
世界读书日将至 新城街道书香浓_每日播报
【播资讯】丹麦克朗汇率最新价格查询(2023年4月21日)
环球即时:富安娜:2022年年归母净利润降至5.34亿元,拟10派6元,电商渠道销售收入同比减少3.24%
首届广州台湾青年岭南文化讲解员大赛总决赛晋级名单出炉 天天讯息
广州海珠区积分入学申请时间及申请系统2023
湿地公园春意浓 游人不负好春光
凯中精密:公司研发的busbar连接线等产品正积极拓展储能领域市场
天天动态:黄龙溪在哪里_黄龙溪古镇在哪里
win10怎么还原到win7系统_win10还原到win7系统的操作方法_环球快资讯
天天通讯!康泰生物(300601):4月21日北向资金减持37.54万股
青春回来了!腾讯音乐手游《节奏大师》最新测试:首次支持iOS
怪兽充电(EM.US)渠道扩张成效显著 代理点位占比已超半数-全球热消息
鹰的重生百看不厌_鹰的重生
淘宝超级会员和普通会员有什么区别?附详情-今日看点
招商局置地前3个月实现合同销售总额97.86亿元 同比上升26.7%
焦点资讯:首站成都丨泸州本土乐队“三套车乐队”办音乐会了!
焦点要闻:省市合力,助力衢州跨境电商高质量发展
莱美药业最新公告:一季度净亏损363.41万元
环球热消息:2023上海车展观察:自主与合资“短兵相接”,车市已到决战时刻!
豪能股份拟发不超5.5亿元可转债 去年底发可转债募5亿
如果冬天来了春天还会远吗是谁写的_详细说一下-环球速看料