2015-05-27 80 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的概念,因为即时编写我的程序在单独的模块和类中 –