Python面向对象编程-自定义异常使用(一)
(相关资料图)
自定义异常可用于多种目的。
定义文件时,当文件的格式不正确时,我们可以抛出自定义异常来指示错误。
在编写网络应用程序时,如果网络请求失败,我们可以抛出自定义异常来指示错误。在编写数据库应用程序时,如果数据库连接失败,我们可以抛出自定义异常来指示错误。在编写游戏时,如果玩家尝试在不允许的情况下执行某个操作,我们可以抛出自定义异常来指示错误。下面是一个使用自定义异常的示例,它演示了如何在游戏中处理玩家错误操作:
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
方法,并在出现异常时捕获和处理异常。在异常处理程序中,我们将打印错误消息,告诉用户出现了什么错误。
标签:
精彩推送
新闻快讯
X 关闭
X 关闭
新闻快讯
- Python面向对象编程-自定义异常使用(一)
- 每日焦点!孔府厨事
- Cell Rep:科学家识别出一种具有新型抗肿瘤活性的特殊蛋白 全球时快讯
- 关注:“合规为本、消保为民” 第十四届银行业保险业合规年会在沪举行
- 海康威视发布2022年ESG报告 科技助力绿色未来
- 化装品_化装
- 广州发放2600万超市百货消费券(附活动时间)|每日关注
- 外汇局:未来会继续推动跨境贸易投融资高水平开放试点
- 每日速看!无锡幼儿园报名出生证明在哪里办
- 电脑设置静态ip地址_电脑设置ip地址怎么设置_全球微资讯
- 脉动宣布旗下全部生产工厂实现碳中和
- 全球信息:别惹农夫班班怎么解锁 班班隐藏皮肤解锁攻略[多图]
- 焦点速讯:用AI写小说会违法吗(ai写小说在线平台)
- 向量平行是什么意思_向量平行是什么意思
- 深圳会展业深调研③|世界级会展商圈将在这里诞生
- 世界今热点:德国驻华使领馆:5月1日起赴德观光旅游将恢复开放
- CBN Friday Special丨Sizzling Zibo: How an old industrial city becomes China’s “hottest” spot? 焦点滚动
- 陆毅_诸葛亮_全球观天下
- 精密水准测量原理 水准测量原理
- 金瑞期货镍新能源专题报告:产能阶段性过剩 产业链库存如何消化?|信息
- 海牛客场战平河南!保级路上每个积分都弥足珍贵
- 今日快看!潮州广济桥_关于潮州广济桥介绍
- 多年打造行业隐形冠军 伯恩光学创始人杨建文的经营哲学-当前关注
- 一应俱全和应有尽有的区别_一应俱全-环球播报
- 宏观微观察:现阶段“复苏”的真面目是什么
- 短期POP广告 最资讯
- 如何在大石头上做设计图_如何在大石头上做设计
- 英国央行“鸽王”发出警告:利率已经过高经济难以承受 环球即时看
- 多措并举显成效 中原证券一季度净利润同比增长282.45% 时讯
- 「数码好物」惠普星BookPro 14 打工人的轻薄生产力
- 个案研究名词解释_个案研究-当前通讯
- 今日热讯:美士猫粮好不好_美士猫粮怎么样
- 环球快资讯丨拓荆科技(688072.SH):2名股东拟询价转让合计3.73%的股份
- 科技现代 上海秀场,北京现代科技之光绽放上海车展
- cf网络出现异常3025_cf网络出现异常
- 近日没有比赛打的iLTW开启了直播
- 胖胖美食_ppm
- [快讯]金爵智能公布2022年年度分红方案预案|世界看点
- 全球球精选!监外执行开庭还要重新坐牢吗
- 米哈游入股XR芯片商万有引力
- 奕东电子:融资净偿还5.38万元,融资余额8499.23万元(04-20)
- 郑州航空港区首只政府性引导基金备案成功 总规模200亿 速看料
- 丹科B股4月21日盘中跌幅达5%
- 北京市成立“4·18”火灾事故调查组 今日快讯
- 湖北新增省级上市“金种子”企业149家 “银种子”企业596家
- 遇见孙燕姿mv_遇见 孙燕姿
- 历时三年,投入数千人!华为新突破:这一应用实现自主可控-全球微头条
- 探访都市夜归人:沈阳的夜让他们有了更多的生活选项_今日热搜
- 天天报道:北京市出台危旧楼房改建政策
- 利尔达:4月20日获融资买入4437元