我正在为课堂上的othello游戏工作,并且当玩家进行有效的移动时我试图引发异常,但这个异常使我的程序崩溃并且我不确定原因。我收到错误:
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他们的代码的第46行是s.makeMove(move [0],move [-1]),其中s是游戏无聊的对象,move是来自玩家的2个数字的列表,表示他们想要的x和y位置转到
答案 0 :(得分:3)
如果你想捕获异常并对它做一些事情,你需要像这样调用你的方法:
try:
s.makeMove(move[0], move[-1])
except InvalidMoveError:
print('You made an invalid move')
# do something else instead
否则,未处理的异常将导致程序终止。这就是重点。