【全球聚看点】Python面向对象编程-自定义异常使用(一)
2023-04-22 05:55:40 来源:腾讯云
					
(资料图)
自定义异常可用于多种目的。
定义文件时,当文件的格式不正确时,我们可以抛出自定义异常来指示错误。
在编写网络应用程序时,如果网络请求失败,我们可以抛出自定义异常来指示错误。在编写数据库应用程序时,如果数据库连接失败,我们可以抛出自定义异常来指示错误。在编写游戏时,如果玩家尝试在不允许的情况下执行某个操作,我们可以抛出自定义异常来指示错误。下面是一个使用自定义异常的示例,它演示了如何在游戏中处理玩家错误操作:
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面向对象编程-自定义异常使用(一)
 - 环球最新:德宏股份2022年营收4.92亿净利1107.61万 董事长秦迅阳薪酬102万
 - 最新资讯:三维股份(603033):4月21日北向资金减持4.13万股
 - 当前热门:瞄准下赛季 休赛期首钢队工作繁重
 - 实时:微信朋友圈上线11周年:你还爱发朋友圈么?
 - 焦点热门:朝外务相谴责!
 - 新消息丨哈曼:图赫尔先马内再穆勒的安排是打后者的脸,我能说他将会离队
 - 世界速看:ETF前沿|百亿基金经理调仓动向曝光,新能源车行业还有机会吗?
 - 全球即时看!加强雨天巡查 守护网格安全
 - 当前时讯:驻马店市公安局驿城分局:和群众“交”朋友
 - 世界热议:史诗级灾难公关 基本信息讲解
 - 今亮点!股票行情快报:中来股份(300393)4月21日主力资金净卖出2521.97万元
 - 微速讯:法国警方发言人:法国正在进行一项调查,与欧盟对奢侈品公司的反垄断调查有关
 - 环球焦点!鄂州职业大学分数(鄂州职业大学分数线)
 - 当前报道:大手拉小诈骗作文(共12篇)
 - 天天百事通!续航绝了!iQOO 12系列在路上:200W超快闪充
 - 【世界热闻】4.21手机天猫非常大牌日,波司登户外旗舰店邀你一起来露营
 - 【全球快播报】提前感知这次“五一”假期有多火:酒店预订量涨4倍、淄博订单涨20倍
 - 天天观天下!美媒将大规模枪击事件称为美国的“国家耻辱” ,中方回应
 - 环球热消息:胜宏科技:公司产品最终广泛应用于亚马逊、微软、思科、Facebook、谷歌、三星、英特尔、英伟达、AMD等国内外众多知名品牌
 - 环球动态:长江健康(002435):4月21日技术指标出现观望信号-“黑三兵”
 - 微头条丨安陆25家专精特新“小巨人”是怎么炼成的?
 - 环球精选!微拍爱视频网 微拍网
 - 世界关注:壹点日历4.21|愿岁月暖人心,花香沁四季!周五早安
 
