2015-05-27 79 views
0

我正在爲類的其他類遊戲工作,並試圖在玩家進行有效移動時引發異常,但此異常導致我的程序崩潰,並且我不知道爲什麼。我得到的錯誤:python引發錯誤異常

Traceback (most recent call last): 
    File "C:\Users\chapp_000\Desktop\Othello\OthelloUI.py", line 46, in <module> 
    s.makeMove(move[0],move[-1]) 
    File "C:\Users\chapp_000\Desktop\Othello\OthelloGL.py", line 73, in makeMove 
    raise InvalidMoveError() 
OthelloGL.InvalidMoveError 

這裏是我的異常類:

class InvalidMoveError(Exception): 
'''for handling bad moves''' 
pass 

,這裏是其中異常被提出:

if self.checkCell(r,c) == 0: 
     if self.turn ==1: 
      self.board[r][c] = 2 
      self.turn =2 
     else: 
      self.board[r][c] = 1 
      self.turn =1 
elif self.checkCell(r,c) !=0: 
     raise InvalidMoveError() 

編輯:回答一些評論我與我們聯繫,以阻止我的程序崩潰,通過在單板上顯示通過和檢查單元格,並且如果沒有棋子是他們的,則返回0;如果該玩家有棋子,則返回1或2他們的行代碼是s.makeMove(移動[0],莫ve [-1])其中s是一個遊戲無聊的對象,move是一個2位數字的列表,表示他們想要移動到的x和y位置

+2

您能否指出第46行和第73行 – therealprashant

+0

提及您正在使用的所有功能的詳細信息,例如checkCell – sgp

+4

這是引發異常時的預期行爲。你究竟想要做什麼? – Leon

回答

3

如果你需要調用你的方法想要捕捉異常並用它做點什麼:

try: 
    s.makeMove(move[0], move[-1]) 
except InvalidMoveError: 
    print('You made an invalid move') 
    # do something else instead 

否則,未處理的異常將導致程序終止。這纔是重點。

+0

謝謝:)我有點困惑於什麼時候調用try和catch的概念,因爲即時編寫我的程序在單獨的模塊和類中 –