我使用MS Chart Controls开发了一个ClickOnce应用程序。它适用于图表部分。 但是,由于需要事先安装Chart Control(使用管理员权限而不是经典的ClickOnce部署),我需要检测该组件是否在计算机上可用。
所以我尝试创建一个新的Chart并处理可能的Exception,但它似乎无法捕获它(太低级别的Exception?):
Try
Dim oChart as New Chart
Catch
' Some user-friendly message to ask the user to contact the helpdesk
End Try
此代码永远不会执行:只要我输入此代码所在的事件,我就会得到一个未处理的异常。
有关调用的详细信息,请参阅此消息的结尾 实时(JIT)调试而不是此对话框。
** * ** 异常文字 ** * **** System.IO.FileNotFoundException:无法加载文件或程序集 'System.Windows.Forms.DataVisualization,Version = 3.5.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个 依赖。该系统找不到指定的文件。文件名: 'System.Windows.Forms.DataVisualization,Version = 3.5.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'at SIPReportingControl.Main.expMain_SelectedGroupChanged(对象发送者, GroupEventArgs e)at Infragistics.Win.UltraWinExplorerBar.SelectedGroupChangedEventHandler.Invoke(对象 sender,GroupEventArgs e)
你有什么想法,以便:
提前致谢。
修改 调用方法(即使我点击另一个组而不是报告,也会生成异常):
Private Sub expMain_SelectedGroupChanged(sender As Object, e As Infragistics.Win.UltraWinExplorerBar.GroupEventArgs) Handles expMain.SelectedGroupChanged
Try
If blnDoEvent Then
CleanControls()
Select Case e.Group.Key
Case "Search"
DisplayGrid(True)
Case "AddEdit"
DisplayAddEdit(Nothing)
Case "Reporting"
Dim oChart As New Chart
End Select
End If
Catch ex As Exception
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
End Try
End Sub
答案 0 :(得分:1)
我看到一个有趣的答案,关于函数调用生成的MSIL代码中抛出的异常,遗憾的是它已被删除,我无法添加注释。
我了解您的代码不负责触发事件。我建议把整个语句放在一个sub中,然后用try方法调用它:
Private Sub expMain_SelectedGroupChanged(sender As Object, e As Infragistics.Win.UltraWinExplorerBar.GroupEventArgs) Handles expMain.SelectedGroupChanged
Try
RedirectTo(e.Group.Key)
Catch ex As Exception
MsgBox(ex.Message & vbCrLf & ex.StackTrace)
End Try
End Sub
Sub RedirectTo(Screen as string)
If blnDoEvent Then
CleanControls()
Select Case Screen
Case "Search"
DisplayGrid(True)
Case "AddEdit"
DisplayAddEdit(Nothing)
Case "Reporting"
Dim oChart As New Chart
End Select
End If
End Sub
它更好吗?