(相關(guān)資料圖)
自定義異??捎糜诙喾N目的。
定義文件時(shí),當(dāng)文件的格式不正確時(shí),我們可以拋出自定義異常來指示錯(cuò)誤。
在編寫網(wǎng)絡(luò)應(yīng)用程序時(shí),如果網(wǎng)絡(luò)請(qǐng)求失敗,我們可以拋出自定義異常來指示錯(cuò)誤。在編寫數(shù)據(jù)庫應(yīng)用程序時(shí),如果數(shù)據(jù)庫連接失敗,我們可以拋出自定義異常來指示錯(cuò)誤。在編寫游戲時(shí),如果玩家嘗試在不允許的情況下執(zhí)行某個(gè)操作,我們可以拋出自定義異常來指示錯(cuò)誤。下面是一個(gè)使用自定義異常的示例,它演示了如何在游戲中處理玩家錯(cuò)誤操作:
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!")
上面的示例中,我們定義了一個(gè)名為 Game
的游戲類,用于處理棋盤和游戲規(guī)則。我們還定義了一個(gè)名為 InvalidMoveError
的自定義異常,用于處理玩家的無效移動(dòng)。
在 make_move
方法中,如果玩家選擇了無效的行或列,則拋出 InvalidMoveError
。如果玩家選擇了已經(jīng)被占用的方格,則也會(huì)拋出 InvalidMoveError
。在 while
循環(huán)中,我們不斷調(diào)用 make_move
方法,并在出現(xiàn)異常時(shí)捕獲和處理異常。在異常處理程序中,我們將打印錯(cuò)誤消息,告訴用戶出現(xiàn)了什么錯(cuò)誤。
關(guān)鍵詞: