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
方法,并在出现异常时捕获和处理异常。在异常处理程序中,我们将打印错误消息,告诉用户出现了什么错误。
标签:
为您推荐
广告
随机阅读
- Python面向对象编程-自定义异常使用(一)
- 孔府秘事
- 天天快看点丨侨银股份联合玉龙国资联合成立公司 注册资本3000万元
- 天天视点!快讯丨湖南涉农贷款余额突破2万亿元
- 航天宏图公布2022年年度权益分配预案 拟10转4股派1.3元|天天快播报
- 台州市烟草_台州烟草网上订货登录
- 成都西岭雪山门票索道费多少?_焦点资讯
- 美元指数小幅收跌 国际金价震荡收涨丨工行连线-天天精选
- 南阳市育儿假休假时间
- 帝科股份:预计2023年一季度净利润为8000万元~9000万元,同比增长336.57%~391.14%
- 观天下!台式电脑开关线连接图_台式电脑开关线怎么接
- 红土镍矿周评:镍矿刚需恢复 镍矿价格暂缓下降_环球聚焦
- 美元定期存款利率上涨,想“换汇存款”?专家提醒|世界今日报
- 土耳其海峡最窄多少米_土耳其海峡_天天播资讯
- 焦点速讯:苏州望亭新埂村开展“机动车交通事故责任法律培训”普法讲座
- 一个王一个玉什么字 一个王一个玉 世界观察
- 北京装修贷款可以用于哪些方面
- 【世界播资讯】提醒事项怎么用_提醒事项如何用
- 周四英文 周四 当前讯息
- 全球动态:外汇局:国内股票估值低 投资收益前景良好 未来外资投资我国证券市场仍有较大提升空间
- 1八村垒换追梦?美媒建议湖人勇士热火老鹰休赛季进行互利四队交易
- 2每日报道:古人束发之年是指多少岁_古人束发是指多大
- 3每年交1.2万元个人养老金,与存银行相比,20年后哪个更划算_天天热议
- 4晶体配位数的巧妙计算公式_晶体配位数 环球时快讯
- 5财报速递:中设股份2022年全年净利润5169.93万元,总体财务状况良好
- 6看点:短期授信
- 7df 天天新动态
- 8资源控股旗下公司因5.9亿欠款被诉讼判决 涉若干抵押地块等_当前讯息
- 9养元饮品一季度净利润增长40% 拟10派18元
- 102023年引滦入津、入唐春季供水全面启动 计划供水3.5亿立方米 天天聚看点
- 1世界热门:火车票_123406火车票官网
- 2华中科技大学远程学院_华中科技远程与继续教育学院
- 3信用卡逾期案例信息在哪看?网贷不能停息挂账后多久可以协商其他方式?_当前速读
- 4佳维科技2022年净利242.05万同比增长30.56%其他收益增加
- 5世界视讯!摔角动态《SmackDown 2016.04.07》战报 罗曼对峙AJ 米兹成功卫冕
- 6天天速讯:2021高考查分时间安徽几点_2021高考查分时间安徽
- 7god2iso两个光盘_god2iso
- 8午间要闻 | 国家外汇局:当前A股估值相对偏低;凌钢股份:从未干预过股票市场价格,不存在输送利益;SpaceX星舰发射升空3分钟后爆炸 世界快播报
- 9环球观焦点:有风来丨这个野心十足的计划,等于让你带古董回家
- 10全球关注:开除企业员工赔偿标准
广告
财经
- 显盈科技:融资净买入96.04万元,融资余额3337.14万元(04-20) 全球信息
- 新赛季首红!杨帆击打对方后脑被红牌罚下
- 4月21日消毒剂板块跌幅达2% 天天聚看点
- 【焦点热闻】国防标准创新信息服务平台上线发布
- 教育部公开曝光7起典型案例
- 【新视野】大爱无声作文500字作文_大爱无声作文
- 啤酒+音乐+美食+营地,潮玩一整年!五一来南海微度假→
- 殴打他人致死后潜逃23年,2名嫌犯海南落网!
- 全球今亮点!新泾镇把便民服务送到这个主题活动现场……
- 中国卫星:公司所属产业处于快速发展阶段,随着技术的不断变革,低轨宽带星座加速部署,高通量卫星性能再上新台阶
- 当前快看:海底两万理主要内容50字_海底两万里主要内容50字
- 天天报道:1公斤熊猫银币价格(2023年04月21日)
- 上海黄金交易所金条价格今天多少一克(2023年04月21日) 环球热点
- 宝宝什么时候开荤_宝宝开荤是什么时候
- 小米电视大师86英寸Mini LED今日开售:4K全场景原色屏,14999元
- 当前视讯!操作小狗引导失心人类《人性》5月16日发售
- 青海省公路平均超限率将控制在2%以内|热议
- 【乡村振兴】东兴市第一书记风采录——我为家乡代言横隘村广地龙
- 本轮冷空气对春耕春播有哪些影响?如何提早防范?专家解读-当前看点
- 螃蟹是两栖动物吗(螃蟹是两栖动物吗为什么) 世界热讯