全球通讯!Python面向对象编程-自定义异常使用(一)

来源:腾讯云

2023-04-22 03:01:47


(相关资料图)

自定义异常可用于多种目的。

定义文件时,当文件的格式不正确时,我们可以抛出自定义异常来指示错误。

在编写网络应用程序时,如果网络请求失败,我们可以抛出自定义异常来指示错误。在编写数据库应用程序时,如果数据库连接失败,我们可以抛出自定义异常来指示错误。在编写游戏时,如果玩家尝试在不允许的情况下执行某个操作,我们可以抛出自定义异常来指示错误。

下面是一个使用自定义异常的示例,它演示了如何在游戏中处理玩家错误操作:

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面向对象编程-自定义异常使用(一)

上面的示例中,我们定义了一个名为Game的游戏类,用于处理棋盘和游戏规则。我们还定义了一个名为InvalidMov[详细]
2023-04-22

全球实时:斯特恩_关于斯特恩简介

1、汤姆·斯特恩(英语:TomStern,1946年12月16日-),ASC(美国电影摄影师协会会员)、AFC(法[详细]
2023-04-22

中银证券:给予苏博特买入评级 新要闻

中银国际证券股份有限公司陈浩武,余嫄嫄,林祁桢,杨逸菲,郝子禹近期对苏博特进行研究并发布了研究报告《业绩[详细]
2023-04-22

环球聚焦:单颗种植牙价格减半!医保部门今起展开种植牙价格综合治理

近日,多地医保部门发布公告,从今天起(20日)落实口腔种植医疗服务收费、种植体集中带量采购、牙冠竞价挂网[详细]
2023-04-22

极具“豹”力美学的国产钢炮,影豹R·ABT联名版登陆上海车展

在4月18日的上海车展中,广汽传祺带来了与改装品牌ABT共同创造的联名车型,影豹(图片|配置|询价)R·ABT联名[详细]
2023-04-22

主销车型63万元 高合HiPhi Z交付量超1,000台

日前,高合汽车宣布旗下第二款量产车型——HiPhiZ交付量正式突破1,000台。值得一提的是,据高合汽车官方披[详细]
2023-04-22

给水和排水工程_关于给水和排水工程介绍

1、给水排水工程以水的社会循环为研究内容。2、水危机是我国社会经济发展的主要制约因素。3、我国的水危机[详细]
2023-04-22

【独家】无脑玛丽苏是什么意思(玛丽苏是什么意思)

1、玛丽苏绝对是自恋的一种折射,最早出现在小说中,现在被广泛应用到电视剧中。2、一般指剧中的女主角不管[详细]
2023-04-22

墙被熏黑了怎么让它变白?家里点香如何防止墙熏黑?|天天热议

墙被熏黑了怎么让它变白?1、如果熏黑的面积不是特别大,杂质也不是特别多,我们可以使用牙膏,因为牙膏[详细]
2023-04-22

今日热讯:GDP同比增长3.1%!一季度北京经济回升向好

4月20日,北京市政府新闻办举行新闻发布会,市统计局、国家统计局北京调查总队介绍今年一季度北京经济运行[详细]
2023-04-22
版权所有: 现在制冷网 All Rights Reserved
粤ICP备18023326号-5
联系邮箱:855 729 8@qq.com