【发布时间】:2026-01-24 15:25:01
【问题描述】:
Dim Fields() As String = msg.Split()
...
Try
If Fields(0) = "FOO" Then
Select Case Fields(1)
Case "1"
...
Case "2"
...
Case "3"
Dim some_object as A = other_object ' other_object is type B
Case "4"
...
Case "5"
...
Case "6"
...
Case "7"
...
Case Else
'TBD
End Select
End If
Catch e As Exception
Dim xyz As Integer= 0
End Try
由于某些奇怪的原因,我的 Catch 块没有在我的案例块中捕获异常,特别是 无效的强制转换异常。有谁知道为什么?谢谢
【问题讨论】:
-
是什么让你觉得它没有被抓到?
-
这引出了一个问题,除非 Option Strict 关闭,否则它为什么要编译。
Fields是什么/如何声明/定义的? -
因为我的程序崩溃并告诉我“在 program.exe 中发生了“System.InvalidCastException”类型的第一次机会异常。附加信息:无法将“A”类型的对象转换为“B”类型"
-
a) 将字符串数组中的元素与字符串文字进行比较不会导致该异常 b) 错误消息不指示正在使用字符串 c) 第一次机会 异常不会崩溃应用程序 d) 是的,代码在哪里,我认为您误诊了它的原因/原因。更有可能是索引超出范围异常,因为您在拆分后不检查计数/大小。
-
您不会在异常对话框中打开“抛出时中断”,对吗?如果是这样,Visual Studio 将在引发异常的行中断,即使您处理它也是如此。 i-msdn.sec.s-msft.com/dynimg/IC808490.jpeg。看起来你的 try / catch 被忽略了。