[VB.net] Foute code geeft geen foutmelding

Pagina: 1
Acties:
  • 75 views sinds 30-01-2008

  • JamesTiberius
  • Registratie: Oktober 2000
  • Laatst online: 08-03-2006

JamesTiberius

Feel the magic

Topicstarter
Hieronder een deel van mijn Visual Basic code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
  sqlCommand.CommandText = "sp_who"
  Dim rs As SqlClient.SqlDataReader = sqlCommand.ExecuteReader
  While rs.Read
      spid = rs.Item("spid") 'id
      ecid = rs.Item("ecid") '?
      status = rs.Item("status") 'sleeping, background etc.
      loginame = rs.Item("loginame") 'gebruiker
      hostname = rs.Item("hostname")
      blk = rs.Item("blk1") '? -> volgens mij 'Bulk' = 1 of 0
      'dbname = rs.Item("dbname") 'database
      cmd = rs.Item("cmd") 'type command: select, awaiting command
  End While
  rs.Close()


Er wordt een stored procedure uitgevoerd die gegevens verstrekt mbt processen binnen sql server. Nu vraag ik opzettelijk een niet bestaand veldje op, namelijk "blk1". dit moet "blk" zijn.

Wat mij nu dwars zit, is dat visual studio mij hier geen foutmelding over geeft. De code stopt gewoon met uitvoeren! Als ik een try / catch om de code heen zet, vangt hij wel een fouttekst op, maar niet meer als de melding "blk1".

Hoe wordt zoiets geregeld? Moet ik naar het componentje kijken als de schuldige? Of naar visual studio? Heb hier eerlijk gezed geen ervaring mee / kennis van. Of gebruik ik de sql data reader voor iets waarvoor hij helemaal niet bedoeld is?

I laugh in the face of danger ... ... then I hide and wait until it goes away -


  • whoami
  • Registratie: December 2000
  • Laatst online: 16-05 10:09
Euh, tuurlijk geeft VS.NET daar geen foutmelding op.
Tijdens het compilatie proces kan de compiler nl. niet weten welke velden er zullen opgehaald worden uit de DB.
Aangezien je dan at runtime een veld opvraagt dat niet bestaat, krijg je een runtime exception.
Je kan niet verwachten dat de compiler at compile time gaat gaan checken of die velden in je DB bestaan.

Als er een exceptie gegooid wordt, en je vangt die niet op, dan stopt de uitvoer idd. Je moet zelf exceptions gaan opvangen, en de juiste actie ondernemen.

https://fgheysels.github.io/


  • JamesTiberius
  • Registratie: Oktober 2000
  • Laatst online: 08-03-2006

JamesTiberius

Feel the magic

Topicstarter
whoami schreef op 17 augustus 2004 @ 15:58:
Euh, tuurlijk geeft VS.NET daar geen foutmelding op.
Tijdens het compilatie proces kan de compiler nl. niet weten welke velden er zullen opgehaald worden uit de DB.
Aangezien je dan at runtime een veld opvraagt dat niet bestaat, krijg je een runtime exception.
Je kan niet verwachten dat de compiler at compile time gaat gaan checken of die velden in je DB bestaan.

Als er een exceptie gegooid wordt, en je vangt die niet op, dan stopt de uitvoer idd. Je moet zelf exceptions gaan opvangen, en de juiste actie ondernemen.
Helaas gaat het hier over runtime

I laugh in the face of danger ... ... then I hide and wait until it goes away -


  • JamesTiberius
  • Registratie: Oktober 2000
  • Laatst online: 08-03-2006

JamesTiberius

Feel the magic

Topicstarter
en nu komt het:

als ik de funtie rechtstreeks aanroep middels een button, dan krijg ik wel een foutmelding.

als ik de functie aanroep via een timer dan krijg ik op dit punt geen foutmelding

I laugh in the face of danger ... ... then I hide and wait until it goes away -


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

JamesTiberius schreef op 17 augustus 2004 @ 16:02:
en nu komt het:

als ik de funtie rechtstreeks aanroep middels een button, dan krijg ik wel een foutmelding.

als ik de functie aanroep via een timer dan krijg ik op dit punt geen foutmelding
Gokje, die timer spamned een ander thread en daardoor krijg je geen foutmelding, omdat deze niet gekoppeld is aan je huidige context?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 16-05 10:09
Waarschijnlijk omdat die Timer in een andere thread oid loopt. Die foutmelding komt wel, maar je ziet 'm niet.

https://fgheysels.github.io/


  • JamesTiberius
  • Registratie: Oktober 2000
  • Laatst online: 08-03-2006

JamesTiberius

Feel the magic

Topicstarter
Ok, jullie weten hier duidelijk meer van af dan mij, ter verduidelijking, zo maak ik mijn timer aan:

(al deze code staat in "form1" (om het zo te zeggen), maar dat zou verder niets mogen uitmaken?)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Public SqlServerCheckTimer As System.Timers.Timer = New System.Timers.Timer

'sql server connectie controle
SqlServerCheckTimer = New System.Timers.Timer
SqlServerCheckTimer.Interval = 1000 * 5
SqlServerCheckTimer.Enabled = True
AddHandler SqlServerCheckTimer.Elapsed, New System.Timers.ElapsedEventHandler(AddressOf SqlServerCheckTimerElapsed)

'timer elapsed sub
Private Sub SqlServerCheckTimerElapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs)
    'roep de verantwoordelijk functie
    sqlServerCheck("127.0.0.1")
End Sub

'controleerd het aantal connecties van SQL server
Private Sub sqlServerCheck(ByVal serveraddress As String)

  Dim sqlCommand As SqlClient.SqlCommand = createSQLCommand(serveraddress, "master", "sqlServerCheck")

  sqlCommand.CommandText = "sp_who"
  Dim rs As SqlClient.SqlDataReader = sqlCommand.ExecuteReader
  While rs.Read
      spid = rs.Item("spid") 'id
      ecid = rs.Item("ecid") '?
      status = rs.Item("status") 'sleeping, background etc.
      loginame = rs.Item("loginame") 'gebruiker
      hostname = rs.Item("hostname")
      blk = rs.Item("blk1") '? -> volgens mij 'Bulk' = 1 of 0
      'dbname = rs.Item("dbname") 'database
      cmd = rs.Item("cmd") 'type command: select, awaiting command
  End While
  rs.Close()

  destroySqlCommand(sqlCommand, "sqlServerCheck")

End Sub


Het creeren van een timer heb ik zo ongeveer 1op1 uit de help van visual studio. ik gebruik deze opzet heel veel en heb er eigenlijk nooit last van gehad.
Doe ik iets structureel fout?

p.s. create en destroy sqlcommand zijn funties die ik gebruik om een sql connectie aan te maken

----
aanvullend: indien ik achter de timer een thread aanmaak en vervolgens in die thread de functie uitvoer, krijg ik wel een foutmelding... (!!??)

[ Voor 11% gewijzigd door JamesTiberius op 17-08-2004 16:39 . Reden: aanvulling ]

I laugh in the face of danger ... ... then I hide and wait until it goes away -


  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
Is er al iemand die een opplossing heeft.

Vorige week deed visual studio het nog prima. Als er een exception optrad die niet afgehandeld werd dan knalde het programma er mooi uit.

Nu loopt mijn proramma gewoon door zonder de functie waar de fout in optreed af e maken. Met een try catchblok wordt de exception welgevangen.

Ik heb het idee dat de debugger niet helamaal ok meer is. Maar hoe ik dat kan controleren ???

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

Maak er eens een Debugbuild ipv een Releasebuild van? :)

Ik mis alleen nog een hoop informatie; heb je zelf ook te maken met een aparte thread waarin het probleem zich voor doet? Heb je in een hogere 'aanroep' een try-catch, waarin je de exception 'verstopt'? Wat heb je gewijzigd, waardoor het nu niet meer werkt?
Oftewel; een hele hoop kanten waar het probleem kan liggen. Verder geef je nu een oud topic een schop; grote kans dat men gaat reageren op eerdere postings, terwijl je een heel ander probleem hebt. :)

Open anders een nieuw topic, eventueel met een verwijzing naar dit topic, om verwarring te voorkomen. Geef daarin ook wat concreter aan wat de omstandigheden zijn :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.