SZLMCL 发表于 2022-7-6 22:44:05

尝试捕捉不工作的VB。净额

嗨!
 
我对VB中的异常处理有问题。NET和AutoCAD Objectarx 2012。
当我用宏连接到数据库时,问题就出现了。
 
项目1:So works(Try-Catch捕捉错误):
---------------------------------------------------------
 
1.VB。NET->新建类库
 


   <CommandMethod("TEST")> _Public Shared Sub TEST()

Dim acaddoc As Autodesk.AutoCAD.Interop.AcadDocument = AcadApp.ActiveDocument
Dim f As frmTest = New frmTest
f.btnTest.PerformClick()
f.ShowDialog()

End Sub

 
2、新增表格(frmTest)
 


Public Class frmTestPrivate Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click

Try
Dim d As Double = "test"
MsgBox("OK")
Catch ex As Exception
MsgBox("ERROR")
End Try
End Sub


End Class
 
3.当我使用Autocad(Netload,TEST)运行te宏时,MsgBox会显示错误消息(“错误”)。
 
项目2:不工作(Try Catch no捕捉错误):
----------------------------------------------------------------
 
1.VB。NET->新建类库
2、新增表格(frmTest)
3、使用数据源向导添加数据源。
4、将数据库表与Datagridview绑定。
5.AutoCAD中的Build->NETLOAD->TEST
 
代码:
 

Try
Dim d As Double = "TEST"
Me.TervezokTableAdapter.Fill(Me.ACADDBDataSet.Tervezok)
lblServerState.Text = "Online"
Catch ex As Exception
lblServerState.Text = "Offline"
End Try

 
这将出现在AutoCAD中:
http://kepfeltoltes.hu/110711/hiba2_www.kepfeltoltes.hu_.png
 
当我注释掉“Dim d As Double=“TEST”行并断开互联网连接(手动抛出错误)时,出现以下情况:
http://kepfeltoltes.hu/110711/hibaa_www.kepfeltoltes.hu_.png
 
我的问题是,为什么在第二种情况下例外不起作用?
 
也欢迎回答!

Tyke 发表于 2022-7-6 22:56:19

在Try中,您已将d声明为double,但为其分配了一个字符串:
 

Try    
Dim d As Double = "test"   
MsgBox("OK")   
Catch ex As Exception   
MsgBox("ERROR")
End Try

 
试着先解决这个问题。

SZLMCL 发表于 2022-7-6 23:18:36

 
我故意这么做,是否应该捕捉异常。

Kerry Brown 发表于 2022-7-6 23:21:28

尺寸d为双=“测试”
 
不应编译。。。因此,您将无法运行程序来测试错误。。。。。除非VB不是类型安全的。

SZLMCL 发表于 2022-7-6 23:36:46

 
但这在他的案例中起到了作用。我可以在AutoCAD中编译和运行。此时会出现msgbox错误消息,这是正常的。我想要这个。
 
有必要在他的案例中获得同样的结果。另一方面,链接的错误消息出现在那里,并且没有msgbox(与PROJECT1 his案例不同)。
 
这就是问题所在。但我同时意识到了解决方案:
 
不允许导入Autodesk。AutoCAD。运行时命名空间。然后捕捉异常就可以了。(也包括项目1和2)。
 
谢谢!

fixo 发表于 2022-7-6 23:52:49

尝试更改此行:


Catch ex As System.Exception

页: [1]
查看完整版本: 尝试捕捉不工作的VB。净额