mybase.load在调用函数vb.net时停止加载

时间:2013-04-30 10:00:11

标签: vb.net function

我逐步完成这段代码,发现该函数不仅没有被调用,而且myBase.Load的其余部分永远不会完成这里发生的事情。

现在显示所有外部参考。程序永远不会碰到**中包围的行,并且会将frmMain_Load作为第一项运行。逐步图标确实落在以reader =开头的行上,但从不调用runAsIsQuery(断点不会捕获并且逐步消失)。然后它向我显示frmMain没有从frmMain_Load或runAsISQuery处理任何其他代码

Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    sqlstring = "SELECT Nickname FROM tblBikeInfo"
    reader = sql.runAsIsQuery(cnn, sqlstring) 'never fires
    **If 1 = 1 Then**
        'ummmm never comes back here either
    End If

有关其他参考文献的详细信息,请参阅frmMain作为全球变量

Dim reader As OleDbDataReader
Dim sql As OLEDB_Handling  'custom  class
Public cnn = MotorcyleDB.GetConnection

Custom Class(OLEDB_Handling)中的函数

**Public Function runAsIsQuery(connection As OleDbConnection, SQL As String) As OleDbDataReader**
    Dim reader As OleDbDataReader
    Dim command As New OleDbCommand(SQL)
    command.Connection = connection
    Try
        connection.Open()
        reader = command.ExecuteReader()
        Return reader

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

End Function

名为(MotorcyleDB)的连接字符串类

Public Shared Function GetConnection() As OleDbConnection

    Return New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\************\Documents\Visual Studio 2010\Projects\MotorcycleMinder\MotorcycleMinder\MotorcycleServiceLog11.accdb")
End Function

1 个答案:

答案 0 :(得分:2)

我发现了这个: http://blog.adamjcooper.com/2011/05/why-is-my-exception-being-swallowed-in.html

这是该网站的摘录。

  

如果满足以下条件:

     
      
  1. 您运行的是64位版本的Windows(无论您的应用程序是针对32位还是64位构建都无关紧要;只有位   OS的深度)
  2.   
  3. 您正在构建WinForms应用
  4.   
  5. 您正在使用Visual Studio调试应用程序(使用默认值   异常捕获的选项)
  6.   
  7. 您的主窗体有一个Load事件处理程序
  8.   
  9. 在执行Load处理程序期间,会发生异常
  10.         

    然后:

         

    系统会默默地吞下异常,而你的   处理程序不会继续执行,您的应用程序将继续   如果你将处理程序代码包装在try / catch块中,你可以   仍明确捕获任何抛出的异常。但如果你不这样做,你会   永远都不知道出了什么问题。

         

    请注意,必须满足所有条件。例如,如果您运行   没有调试的应用程序,然后仍然是未处理的异常   被正确抛出。

网站上还有一种解决方法。但是我会把代码放在try catch块中,或者把整个东西放在Initializer / Constructor中。