【資料圖】
自定義異常可用于多種目的。
定義文件時,當文件的格式不正確時,我們可以拋出自定義異常來指示錯誤。
在編寫網絡應用程序時,如果網絡請求失敗,我們可以拋出自定義異常來指示錯誤。在編寫數據庫應用程序時,如果數據庫連接失敗,我們可以拋出自定義異常來指示錯誤。在編寫游戲時,如果玩家嘗試在不允許的情況下執行某個操作,我們可以拋出自定義異常來指示錯誤。下面是一個使用自定義異常的示例,它演示了如何在游戲中處理玩家錯誤操作:
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方法,并在出現異常時捕獲和處理異常。在異常處理程序中,我們將打印錯誤消息,告訴用戶出現了什么錯誤。
關鍵詞:
參與評論
- 餐飲商家從“賣套餐”轉向“賣空間”2025-11-21
- 男子因公出差參加活動抽中3000元顯卡,卻被2025-11-21
- 11月21日生意社線材基準價為3325.00元/噸2025-11-21
- 【ETF動向】11月20日博時創業板ETF基金跌0.2025-11-21
- 鼎通科技:融資凈買入2028.36萬元,融資余2025-11-21
- PriceSeek提醒:石油焦報價下調50元/噸2025-11-21
- 熱議:蘇炳添完成“最后一舞” 湖北隊奪得2025-11-20
- ST聯創:公司無液冷服務器產品-焦點訊息2025-11-20
- 視頻丨二十四節令鼓、潮州英歌舞……全運會2025-11-20
- 中國股市:無人船龍頭上市公司有哪些(附名2025-11-20
- 焦點觀察:紐威股份(603699.SH):第二期員2025-11-20
- 動態焦點:1967年,梁興初視察四川,上街后2025-11-20
- 三款產品登榜!智光電氣榮膺2025年廣東省名2025-11-20
- 報道:健康告知需要注意哪些關鍵點?2025-11-20
- 開拓者跟隊記者:楊瀚森的防守仍然存在問題2025-11-20
- 盧浮宮計劃加裝監控攝像頭 100個!2025-11-20
- 冬季禮包,激發消費新活力2025-11-20
- 《金融支持北京市提振和擴大消費的實施方案2025-11-20
- 短訊!1.02萬億元、20%,有“量”有“質”2025-11-20
- 菜百股份:在定期報告中面向公眾統一披露截2025-11-19
- 養殖概念股一覽,收藏好!(2025/11/19) 熱門2025-11-19
- PriceSeek提醒:華東甲醇報價集體下調|看點2025-11-19
- 瑞聲科技(02018)11月19日斥資1136.26萬港元2025-11-19
- 每日快訊!福石控股:公司近期經營情況正常2025-11-19
- 【獨家】2025年我國AI玩具市場規模有望增至2025-11-19
- 源頭清零非法捕獵工具!雙流專項行動聚焦農2025-11-19
- 每日速讀!三連跌后 國家隊暗中出手!2025-11-19
- 每日動態!繁華商圈變身運動街區 “體育+”2025-11-19
- 沒簽勞動合同就沒有勞動關系嗎?人社部解答2025-11-19
- 當前熱訊:瑞爾集團:截至9月30日止六個月預2025-11-19