看起来不可能,但是...
Try
Select Case command
Case 1
smth()
Case 2
If Not validSmth() Then
Throw New Exception(errMsg)
Else
doSmth()
End If
Case 3
doSmthElse()
Case Else
Throw New Exception(errMsg2)
End Select
Catch ex As Exception
ProcessEx()
End Try
首先Case 2
运行。抛出异常。在这个调试器显示下一个处理的语句之后是Case Else
. 只有在Case Else
抛出自己的异常Catch
块后才开始工作。我从来没有见过这种伎俩。为什么会发生这种情况?
我确定该块被输入一次(不是这样的:first enter hit Case 2
and second hit Case Else
)。
感谢您的任何想法。
更新:
——致马特·威尔科。谢谢你的回答。我已经切换到Strict On
VS2010 的选项,但没有任何改变。 Command
是变量,不是函数。观察工具显示每一步Command
都是相同的(Command
= 2)。
回答
固定的。是啊啊啊。我将代码简化为
Try
Select Case 2
Case 2
Throw New Exception("123")
Case Else
Throw New Exception("345")
End Select
Catch ex As Exception
wtf(ex.Message)
End Try
并将项目更改为控制台应用程序。正如我所提到的,这很有效。修复在Release mode
. 我正在调试Release mode
. 当我切换到Debug mode
一切正常时。
感谢大家的快速解答。