Nel popolare alcuni dati di una DataRow

codice:
Dim FoundRow As DataRow
FoundRow = dt.Rows.Find(Data0)

If FoundRow Is Nothing Then
      Debug.Print("Inserisco un nuovo record")
      Dim NewHHRow As DataRow = dt.NewRow()
      Debug.Print (Data0.ToString)
      NewHHRow(0) = Data0
      Debug.Print (Data1.ToString)
      NewHHRow(1) = Data1
      .............. etc etc

      Debug.Print ("Aggiungo nuova riga")
      dt.Rows.Add(NewHHRow)
      da.Update(ds, Tabella)
nella finestra di controllo immediato compare una riga:

Eccezione first-chance di tipo 'System.InvalidOperationException' in System.dll (nessun messaggio ulteriore)

Il dati non sono Null, perché controllo con un Debug.Print prima di inserirli.

Tutto codice è inserito in un Try... Catch...

codice:
  Catch inv As InvalidOperationException
            MessageBox.Show("Errore: " & inv.ToString)
  Catch ex As Exception
            MessageBox.Show(Errore: " & ex.ToString)
La cosa strana è che il database si aggiorna assolutamente regolarmente e che la eccezione non viene rilevata, nel senso che il codice Catch non viene eseguito: se in Debug non dessi una occhiata alla finestra di controllo immediato non mi accorgerei di nulla.

Domanda: come capire che cosa genera la eccezione e perché non viene rilevata dal Try... Catch? Se potessi arrivare al Catch saprei qualcosa di più...