天天看点: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面向对象编程-自定义异常使用(一)
2023-04-22 -
经典音乐:一曲《雅致茶音》,清新、自然、美好_世界热讯
2023-04-22 -
第14届北京国际茶业及茶艺博览会举办_前沿热点
2023-04-22 -
我国货物和服务贸易发展提质增效 为外汇市场平稳运行提供有力支撑
2023-04-22 -
招商蛇口一季度营收减少两成至150.09亿 归母净利2.72亿
2023-04-22 -
智能航运一体化应用技术国家地方联合工程研究中心_对于智能航运一体化应用技术国家地方联合工程研究中心简单介绍 环球观天下
2023-04-22 -
世界今日报丨学系统集成项目管理工程师(中项)系列07_信息(文档)管理
2023-04-22 -
环球新消息丨超乎想象!4个月“暴赚”14600亿,这10人“手握”印钞机!他“包”下全球首富
2023-04-22 -
世界新资讯:韩国KOSPI指数4月21日(周五)收盘下跌18.71点,跌幅0.73%,报2544.40点
2023-04-22 -
变电所直流屏的作用 直流屏的作用及原理
2023-04-22 -
世界微动态丨奔向各地春色、点燃消费热情——旅游专列人气旺
2023-04-22 -
财力全开!曼城若成三冠王,全队每人能拿200万英镑奖金 环球时讯
2023-04-22 -
最新消息:张学松个人资料简历_张学松个人资料介绍
2023-04-22 -
环球聚焦:四达新材2022年净利598.66万同比增长87.91% 销售收入增长
2023-04-22 -
全球热点!泰国孕妇王媛媛坠崖案最终审判_69孕妇泰国坠崖案
2023-04-22 -
临沂酒店排名前十_临沂酒店排名 每日消息
2023-04-22 -
调岗20多天后,杨文斌主动交代了|要闻速递
2023-04-22 -
新闻通稿的范文-新闻通稿的写法 快播
2023-04-22 -
旋极信息:2023年第一季度净利润约-4383万元
2023-04-22 -
北京保利艺术博物馆官网_北京保利艺术博物馆 焦点简讯
2023-04-22 -
上交所:对*ST紫晶及相关责任人予以纪律处分及监管警示
2023-04-22 -
朱自清介绍视频(朱自清介绍)
2023-04-22 -
全球快看:不敢苟同的近义词是什么(不敢苟同的近义词)
2023-04-22 -
环球看点!星光璀璨,郁钧剑吴碧霞刘丹丽等唱响长江民歌汇
2023-04-22 -
湖南胜捷泰安消防科技有限公司被罚款5000元
2023-04-22 -
坐着“移动酒店”环游沙漠!这趟高品质旅游专列还将开行多趟
2023-04-22 -
习近平总书记关于加强和改进民族工作的重要思想研讨会举行
2023-04-22 -
科创信息: 2022年度独立董事述职报告(谭清炜)
2023-04-22 -
西藏昌都:全面动员 多警联动 开创公安和消防联勤联防工作新局面
2023-04-22 -
今日报丨完善工业互联网功能体系
2023-04-22
-
守住网络直播的伦理底线
2021-12-16 -
石窟寺文化需要基于保护的“新开发”
2021-12-16 -
电影工作者不能远离生活
2021-12-16 -
提升隧道安全管控能力 智慧高速让司乘安心
2021-12-16 -
人民财评:提升消费体验,服务同样重要
2021-12-16 -
卫冕?突破?旗手?——武大靖留给北京冬奥会三大悬念
2021-12-16 -
新能源车险专属条款出台“三电”系统、起火燃烧等都可保
2021-12-16 -
美术作品中的党史 | 第97集《窗外》
2021-12-16 -
基金销售业务违规!浦发银行厦门分行等被厦门证监局责令改正
2021-12-16 -
保持稳定发展有支撑——从11月“成绩单”看中国经济走势
2021-12-16