【发布时间】:2017-01-12 16:56:36
【问题描述】:
我正在做一个国际象棋游戏,我只是想知道我是否可以在我的代码中摆脱这些空的 catch 块,并让同一范围内的所有 try 块转到一个 catch 块,因为我认为这是开始看起来有点愚蠢和杂乱无章。
我的代码:
for (int i = 1; i < 8; i++)
{
try
{
if (board[x + i, y].Equals(blackColor))
checkmateList.AddLast(placementBoard[x + i, y]);//Moving Right
}
catch
{
}
try
{
if (board[x - i, y].Equals(blackColor))
checkmateList.AddLast(placementBoard[x - i, y]);//Moving Left
}
catch
{
}
try
{
if (board[x, y + i].Equals(blackColor))
checkmateList.AddLast(placementBoard[x, y + i]);//Moving Down
}
catch
{
}
}
我有空的 catch 块,因为我得到的唯一错误是越界异常,因为它会退出董事会,所以我只是停止搜索并进入不同的区域,但我认为它看起来很愚蠢,因为大多数我的使碎片移动的代码包括这个。
【问题讨论】:
-
为什么不检查边界而不是吞下异常?那将是一个更好的方法。
-
不要使用异常来控制应用程序流!
-
将for循环放入一个异常处理程序中,去掉for循环内的异常处理程序。
-
查尔斯,您的意思是取 x 或 y 值,然后将其减去 8 并多次运行循环?
-
是的,或者至少在尝试之前检查是否可行。为您无法预测的事情保留例外情况,例如无法访问用户要求您打开的文件。