0

您好,我正在尝试更清楚地了解何时使用异常以及何时不使用它们。我将给出几个案例场景。你能告诉我哪些情况下我应该使用异常,并解释为什么我应该或不应该?(注意:这不是作业问题)。

场景 1:我设计了一个电脑游戏,其中每个单元都可以移动到棋盘上的一个正方形。但是,有些方格可以被挡住。我应该抛出一个 SquareIsBlockedException 来防止单元移动吗?

场景 2:我在数据库中插入了一条记录,但是它失败了,因为唯一 ID 已经存在。它抛出一个 DuplicateIDException。

为什么我应该为方案 2 使用例外,而不是为方案 1?

4

2 回答 2

1

1) 不。格子被挡住并不是一件特别的事情——可以假设它在你的游戏中很常见。当程序中发生不应该发生的事情时,应该触发异常。

2) 可能。将重复记录插入数据库是不应该正常发生的事情。它也可能暗示一个错误。

如果您触发异常,您将停止执行流程。这很好 - 在您的系统发现它正在插入重复的行之后,它应该怎么做?您很可能没有准备好系统在这种情况下正常运行。另外,您可以(在您的调试器、日志等中)查看出了什么问题,这使您更容易修复代码。

于 2013-04-21T18:56:53.223 回答
0

这完全取决于用例,在您的两个示例中,是否使用异常可能是有意义的。

异常应该用于......异常。网络中有一些“错误代码”示例,其中异常用于流量控制。不要这样做。

所以 Ex1 对我来说听起来像是一个流控制,使用 if 或语言流控制。

在 Ex2 中,当需要首先点击数据库以查找 ID 是否已经存在时,对重复项的显式控制可能会导致更多代码。ID 是自动 id,请使用异常,因为正常情况是 autom。ID都是不同的。id 是用户可编辑的数据字​​段(例如名称),如果 Id 已经存在,则首先查找。

于 2013-04-21T19:00:39.197 回答