我想知道您之前是否遇到过这个错误:
在单行 IF 上,条件返回 FALSE,然后执行继续执行到 TRUE 部分。
我在这里做错了吗? retries
和 errorTolerance
都是 Integer
类型,从下面的截图中,retries
小于 errorTolerance
。但它仍然执行 True
部分的语句。
这一直在搞砸我的程序,所以我所做的是将 Throw New Exception
放在另一行中,并用 End If
关闭,它可以工作。
我想我的问题是我以前的代码有什么问题?
最佳答案
禁用优化以确保代码行和相应的编译指令之间存在清晰的线性对应关系。
如果这是 Release模式编译,并且 retries
只是一个超出范围的局部变量,那么编译器可能刚刚优化了在最初保存 retries
的寄存器中存储增量值,但在检查表达式时仍使用该寄存器。
为了确认这一点,您将看到 retries
和 errorTolerance
在 Release模式下具有相同的值,而 retries
在 Debug模式下重新编译后具有更大的值。在您逐步执行这些行时分别检查变量。