無理っぽいけど…
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
私はこのトリックを見たことがありません。なぜこれが起こったのですか?
私は、ブロックが一度入力されていると確信しています(このようではありません:最初にヒットCase 2
し、2番目にヒットし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
すべてが正常に機能します。
迅速な回答をありがとうございました。