当前位置:首页 >资讯 > 正文

焦点速讯:Python面向对象编程-自定义异常使用(一)
2023-04-22 10:51:28    腾讯云


(资料图片仅供参考)

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

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

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

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

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

关键词:

下一篇: 时讯:点亮经济新“夜”态 探访热闹繁忙的港口之夜
上一篇: 孔北京

天天时讯:沃尔德:累计回购约86万股,占比0.56%

明冠新材(688560.SH)已耗资1.88亿元回购3.13%股份

每日速看!风趣的近义词是什么(风趣的近义词是什么呀)

秦川集团:举办“走进常州”系列产品推介会

非沪籍上海买房2020_非沪籍上海买房政策

定点描写法

今年以来我国高温日数创62年来新高

打造城市“金边银角” 方寸之美“兜住”百姓幸福生活-每日报道

世界周刊丨美国“毒”病难有尽头

每日精选:无糖饮料中的阿斯巴甜被曝致癌,喝前需了解这些危害!

豆粕期货涨停 带动豆粕ETF领涨

“锌”是男性之王,年过40,多吃3种高锌食物,精力旺身体强壮|天天资讯

7月3日人民币兑美元中间价上调101个基点

全球微头条丨青岛签订山东首笔海洋碳汇交易!​“碳”路海洋,更多尝试从青岛启航

环球即时:AI大模型,教育智能硬件新突围点?

健康知识 | 重症中暑很危险 可以这样预防 环球最资讯

世界要闻:两条对接武汉高速同日通车,孝感迈入都市圈“半小时通勤圈”

曝光屡禁不止屡罚不改经营主体

美国非法扩张域外管辖权严重扰乱国际秩序|全球热闻

联通iphone4s用电信卡(联通iphone4s)-当前观察

OPPOK11x,带给消费者4年流畅用机体验 环球今日报

上市时间久的空调能买吗_上市时间

【环球热闻】“港车北上”政策正式实施 日均可单向通关逾万辆次

怎么修改本机ip地址和名字_怎么修改本机ip地址

天天新消息丨又喊口号?中情局长称对华“脱钩”愚蠢,却又声称美国应“去风险”

珠算是什么时候申遗成功,有什么意义_珠算申遗相关内容简介介绍 环球消息

环球看点!清远封闭学校在哪 清远有哪些封闭式学校

环球焦点!高温又双叒叕来了,煤超疯将重现江湖

搜索者2 全球快消息

温网明日开打,中国五将首日出战,美小黑夺首冠,阿新星问鼎|新视野

“最忙乘组”任务结束后首次同框!揭秘“太空出差”那些事儿

人大毕业生盗取全校学生信息建颜值打分网站?校方:正核实,校领导牵头处理 当前要闻

快当爹了!加纳乔甜蜜亲吻女友孕肚,孩子恩佐不久后将出生_世界快资讯

水处理定制化服务专家英普环境IPO,向美国杜邦下属公司采购额占比超四成 世界百事通

老少皆宜的10道家常菜,都是平价菜,却百吃不腻,越吃越过瘾 环球时讯

光大证券:复合铜箔首张订单落地,路线尚有分歧但技术迭代空间广阔