环球观热点:Python面向对象编程-自定义异常使用(一)
2023-04-22 12:24:03来源:腾讯云
(资料图片仅供参考)
自定义异常可用于多种目的。
定义文件时,当文件的格式不正确时,我们可以抛出自定义异常来指示错误。
在编写网络应用程序时,如果网络请求失败,我们可以抛出自定义异常来指示错误。在编写数据库应用程序时,如果数据库连接失败,我们可以抛出自定义异常来指示错误。在编写游戏时,如果玩家尝试在不允许的情况下执行某个操作,我们可以抛出自定义异常来指示错误。下面是一个使用自定义异常的示例,它演示了如何在游戏中处理玩家错误操作:
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面向对象编程-自定义异常使用(一)
- 广西一中学教师猥亵女生?官方通报是什么情况 广西一中学教师猥亵女生?官方通报具体来龙去脉是怎么样_资讯推荐
- 小瞧中年情怀消费力? 灌篮高手登顶淘宝热搜
- 环球今日讯!结婚几年分别叫什么婚 结婚二十年是什么婚
- 今头条!无人机远程自主巡检守护电网安全
- 江西提升金融供给质效 引导更多金融资源向重点领域和薄弱环节倾斜
- 全球热文:长沙:水度河市场冻品供应链专区运行
- 谷歌 Pixel Tablet 平板有 128GB / 256GB 版本,起售价 600 美元
- 孔和平|世界最资讯
- 常喝蜂蜜的好处与坏处_每天喝蜂蜜水的好处和坏处
- 短讯!外汇局:A股估值偏低 投资价值较高
- 工业富联:4月21日融资买入5.35亿元,融资融券余额17.28亿元 环球快报
- 外地摩托车进京用办理进京证吗?|当前视点
- 强硬回应!俄罗斯与白俄罗斯携手维护国家安全-环球观热点
- 河南省洛阳市2023-04-21 09:05发布寒潮蓝色预警
- 官方:儒尼奥尔、于睿、朱宝杰、张玉全等11名球员加盟四川九牛-微资讯
- 胜平负都一起!三镇泰山神同步 争冠热门集体2轮不胜|当前速读
- 北京到广州的铁路线长2313米对吗_北京到广州飞机票
- 股票行情快报:龙津药业(002750)4月21日主力资金净买入647.17万元
- 4月21日西北地区地炼汽柴油报价下滑
- 股票行情快报:青岛食品(001219)4月21日主力资金净卖出565.12万元
- 当前消息!宝马MINI冰淇淋事件:涉事女员工离职
- 食谱大全家常菜_食谱大全家常菜|全球播报
- 静安:“8分钟智慧学习圈”让读书、学习成为新风尚
- 京港澳高速汉江特大桥完成升级改造恢复货车通行
- 观热点:数字货运看淄博烧烤:咬一口吃遍半个华东
- 神秘海域电影再次推迟这次推迟到2021年3月
- 星火成炬 | 妙“手”在民间 天天播报
- 男子嫌未盛满饭暴打食堂阿姨 阿姨回嘴两人打在一起
- 王艺迪 :郑怡静失误偏多比赛赢得较顺利 对阵王曼昱充分展现自我 最资讯