聚焦: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 03:59:28
环球热议:上交所对*ST紫晶、*ST泽达实施重大违法强制退市
2023-04-22 04:05:25
焦点!四川省2023年普通高校专升本考试顺利举行
2023-04-22 03:37:04
世界快资讯:浏阳澄潭江镇:“睦邻里”筑牢汛期安全防线  
2023-04-22 02:54:01
天天微资讯!523.1亿!一季度江苏交通“开门红”
2023-04-22 02:56:27
世界微头条丨云南大学录取分数线2021艺术生_云南大学录取分数线2021
2023-04-22 02:11:09
今日视点:降价后遗症? 特斯拉一季度交付创新高!净利却跌超20%,马斯克发声了
2023-04-22 02:09:32
全球快看点丨矫治
2023-04-22 01:55:06
环球视讯!股票行情快报:美克家居(600337)4月21日主力资金净买入106.62万元
2023-04-22 01:22:43
【环球热闻】今日怎么快速刷公会硬币(怎么快速刷公会声望)
2023-04-22 01:03:46
天天速讯:富瑞特装股东户数下降2.21%,户均持股5.67万元
2023-04-22 00:34:37
全球观点:啤酒适合浇什么花 啤酒适合浇什么花和树?
2023-04-22 00:15:02
世界快看:贵州红花岗经济开发区税务局:税收宣传进企业 代表委员话税收
2023-04-21 23:50:54
全球关注:信达证券(601059)盘中异动 股价振幅达6.46% 跌6.97% 报14.68元(04-21)
2023-04-21 23:25:55
天天消息!胜宏科技(300476)盘中异动 股价振幅达7.46% 上涨6.88%(04-20)
2023-04-21 23:08:38
天天观焦点:有个数丨“上新”越来越早,“数说”20个春天里的西湖龙井
2023-04-21 23:00:27
微头条丨宗校立:周五交易日,切忌冲动,谨慎小心!
2023-04-21 22:20:33
世界新消息丨炬华科技(300360.SZ)发布2022年度业绩,净利润4.72亿元,增长48.52%,拟10股派2元
2023-04-21 22:02:57
天天快报!沪深交易所发布2023年劳动节休市安排
2023-04-21 21:27:33
环球滚动:2022年聊城破获各类侵犯知识产权领域违法犯罪刑事案件49起
2023-04-21 20:46:59
每日关注!强信心·开新局|雪域高原春日忙——西藏高原经济高质量发展一线见闻
2023-04-21 20:54:17
【全球新视野】宝马回应女生在MINI展台直播被拖走事件:已交由警方处理
2023-04-21 19:35:09
环球快讯:香农芯创:境外销售收入主要来源于阿里、腾讯、字节等企业
2023-04-21 19:33:34
热门看点:取飞机票的过程是怎么操作的_飞机票取票机图解
2023-04-21 19:27:38
【全球速看料】注意!中国外运将于5月12日召开股东大会
2023-04-21 19:31:48
热点!世纪互联与多家产业链生态合作伙伴开启战略合作
2023-04-21 18:52:33
环球热推荐:科创信息: 关于召开2022年年度股东大会的通知
2023-04-21 18:02:52
天天快资讯:严把教师队伍入口关 对师德违规问题“零容忍”
2023-04-21 17:50:52
【独家焦点】南京聚隆: 董事会决议公告
2023-04-21 17:31:12
当前动态:青春不“毒”行!禁毒宣传走进怀柔校园
2023-04-21 17:42:56