环球观天下!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方法,并在出现异常时捕获和处理异常。在异常处理程序中,我们将打印错误消息,告诉用户出现了什么错误。

关键词:

1-7月安徽快递业务量增速跃居全国前十 业务收入增12.1%

记者8月24日从安徽省统计局获悉,今年以来,我省快递业务保持快速增长势头。1-7月,全省快递业务量累计完成18 9亿件,同比增长16 5%,高于

中安在线 2022-08-26

前5月全国快递业务量409.5亿件 同比增长3.2%

国家邮政局公布5月邮政行业运行情况。1月~5月,邮政行业业务收入(不包括邮政储蓄银行直接营业收入)累计完成5317 8亿元,同比增长5 9%;业务

工人日报 2022-06-20

各行业工资单出炉!IT类最赚钱,还有这些钱景喜人

  中新经纬11月24日电 (张澍楠)虽说三百六十行,行行出状元,但行业之间的差距,仍然很大。究竟什么行业“最香”?被视为“高富帅”的金

2021-11-24

“狗咬人”事件当事人被撤职 多名干部被问责

  新华社郑州11月23日电(记者冯大鹏)在“狗咬人”舆情发酵后,23日晚,河南安阳通报了对涉“狗咬人”事件责任单位和责任人的处理决定。 

2021-11-24

北京朝阳区来广营华贸城7号院6号楼解除管控

  11月23日晚,朝阳区来广营地区清苑路第五社区华贸城7号院6号楼正式解除管控。  11月23日,华贸城7号院6号楼583户管控居民进行了第四

2021-11-24

大连市将4个中风险地区调整为低风险地区

  11月23日大连市新冠肺炎疫情防控总指挥部发布,大连市严格落实新冠肺炎疫情防控各项措施,至2021年11月23日24时,大连市庄河市城关街道

2021-11-24

云南哀牢山4名遇难地质队员遗体已移交其所在单位

  根据云南省普洱市哀牢山 "11·15 "联合指挥部通报,2021年11月23日21时50分,4名遇难人员遗体已移交其所在单位。 【编辑:叶攀】

2021-11-24

1-7月安徽快递业务量增速跃居全国前十 业务收入增12.1%

记者8月24日从安徽省统计局获悉,今年以来,我省快递业务保持快速增长势头。1-7月,全省快递业务量累计完成18 9亿件,同比增长16 5%,高于

中安在线 2022-08-26

前5月全国快递业务量409.5亿件 同比增长3.2%

国家邮政局公布5月邮政行业运行情况。1月~5月,邮政行业业务收入(不包括邮政储蓄银行直接营业收入)累计完成5317 8亿元,同比增长5 9%;业务

工人日报 2022-06-20

各行业工资单出炉!IT类最赚钱,还有这些钱景喜人

  中新经纬11月24日电 (张澍楠)虽说三百六十行,行行出状元,但行业之间的差距,仍然很大。究竟什么行业“最香”?被视为“高富帅”的金

2021-11-24

“狗咬人”事件当事人被撤职 多名干部被问责

  新华社郑州11月23日电(记者冯大鹏)在“狗咬人”舆情发酵后,23日晚,河南安阳通报了对涉“狗咬人”事件责任单位和责任人的处理决定。 

2021-11-24

云南哀牢山4名遇难地质队员遗体已移交其所在单位

  根据云南省普洱市哀牢山 "11·15 "联合指挥部通报,2021年11月23日21时50分,4名遇难人员遗体已移交其所在单位。 【编辑:叶攀】

2021-11-24

宁夏10年为农村创业妇女发放创业担保贷款超138亿元

  中新网银川11月23日电 (李佩珊 姚舒玲)“在宁夏,每6个农村妇女中就有1个接受过创业担保贷款项目的资金支持。”11月23日,宁夏妇联党

2021-11-24

第三届拉萨市旅游行业服务技能大赛决赛举行

  中新网拉萨11月23日电 (记者 冉文娟)第三届拉萨市旅游行业服务技能大赛决赛11月23日精彩举行。百余名选手经过层层选拔,经历初赛、网

2021-11-24
x 广告
x 广告
x 广告

Copyright   2015-2022 西南仓储网版权所有  备案号:皖ICP备2022009963号-8   联系邮箱:39 60 29 14 2@qq.com