login  Naam:   Wachtwoord: 
Registreer je!
 Forum

exception handling (Opgelost)

Offline kickasgamer - 05/01/2008 19:22
Avatar van kickasgamerPHP ver gevorderde waarom werkt deze exception handling niet ?

  1. Try
  2. totaal2 = totaal1 / Convert.ToDouble(display.Text)
  3. Catch X As DivideByZeroException
  4. MessageBox.Show(X.Message)
  5. End Try

48 antwoorden

Gesponsorde links
Offline Koen - 05/01/2008 19:25
Avatar van Koen PHP expert
  1. Try
  2. totaal2 = totaal1 / Convert.ToDouble(display.Text)
  3. Catch X As DivideByZeroException
  4. MessageBox.Show(X.Message.Tostring)
  5. End Try


.Tostring erbij 
Offline Maffiow - 05/01/2008 19:25
Avatar van Maffiow PHP interesse Ik deed het altijd zo...

  1. Try
  2. totaal2 = totaal1 / Convert.ToDouble(display.Text)
  3. Catch X As System.DivideByZeroException
  4. MessageBox.Show(X.Message)
  5. End Try
Offline Abbas - 05/01/2008 19:28 (laatste wijziging 05/01/2008 19:29)
Avatar van Abbas Gouden medaille

Crew .NET
@sliphead: die ToString() moet er niet bij. De Message die je krijgt is al van het type string! 

@Maffiow: jij zet enkel System voor die Exception. Dat is niet nodig aangezien dat deze library normaal standaard wordt ingeladen.

En als dit niet zo is, zet dan dit helemaal bovenaan je file:
  1. Imports System

En dan heb je dat niet meer nodig bij die Catch, anders wel.
Offline Koen - 05/01/2008 19:30 (laatste wijziging 05/01/2008 19:32)
Avatar van Koen PHP expert
titjes schreef:
@sliphead: die ToString() moet er niet bij. De Message die je krijgt is al van het type string! 

@Maffiow: jij zet enkel System voor die Exception. Dat is niet nodig aangezien dat deze library normaal standaard wordt ingeladen.

En als dit niet zo is, zet dan dit helemaal bovenaan je file:
[..code..]
En dan heb je dat niet meer nodig bij die Catch, anders wel.


Dan is het maar 2 keer string he 

Edit: Kan je niet beter mbv 'If' kijken of datgene waardoor je deelt gelijk is aan nul?
Offline kickasgamer - 05/01/2008 19:34 (laatste wijziging 05/01/2008 19:35)
Avatar van kickasgamer PHP ver gevorderde ik krijg nog steeds geen message box, ik hbe die system voor divideBYzero gezet
maar dit verschijnt wel uitzichzelf in mijn display: oneindig
Offline Abbas - 05/01/2008 19:39
Avatar van Abbas Gouden medaille

Crew .NET
Citaat:
Kan je niet beter mbv 'If' kijken of datgene waardoor je deelt gelijk is aan nul?
Ja dat kan en dan als het deeltal 0 is, de deling niet doen en een melding geven ofzo. Maar waarom denk je dat die DivideByZeroException gemaakt is? Inderdaad, zodat je die controles allemaal niet meer perse zelf hoeft te doen. 

@kickassgamer: geef eens een beetje meer code! 
Offline kickasgamer - 05/01/2008 19:40
Avatar van kickasgamer PHP ver gevorderde dit heel de code van de "=" knop (rekenmachine;-))

  1. Private Sub uitkomst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles uitkomst.Click
  2. If bol_plus = True Then
  3. totaal2 = totaal1 + Convert.ToDouble(display.Text)
  4. ElseIf bol_min = True Then
  5. totaal2 = totaal1 - Convert.ToDouble(display.Text)
  6. ElseIf bol_maal = True Then
  7. totaal2 = totaal1 * Convert.ToDouble(display.Text)
  8. ElseIf bol_delen = True Then
  9. Try
  10. totaal2 = totaal1 / Convert.ToDouble(display.Text)
  11. Catch X As System.DivideByZeroException
  12. MessageBox.Show(X.Message)
  13. End Try
  14. End If
  15. display.Text = totaal2
  16. totaal1 = 0
  17. totaal2 = 0
  18. bol_plus = False
  19. bol_min = False
  20. bol_maal = False
  21. bol_delen = False
  22. verder_nieuw = True
  23.  
  24. End Sub
  25. End Class
Offline Abbas - 05/01/2008 19:52
Avatar van Abbas Gouden medaille

Crew .NET
Verschijnt die oneindig ook als je niet deelt door 0?
Offline kickasgamer - 05/01/2008 19:56
Avatar van kickasgamer PHP ver gevorderde vreemd genoeg niet neen
Offline Abbas - 05/01/2008 19:58 (laatste wijziging 05/01/2008 19:58)
Avatar van Abbas Gouden medaille

Crew .NET
Dan is er toch niets verkeerd?! Als je deelt door 0, krijg je inderdaad een kader met de tekst "Oneindig". Wil je zelf een tekst dan doe je die x.Message weg en doe je:
  1. MessageBox.Show("Fout: je mag niet delen door 0!", "FOUT", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Offline kickasgamer - 05/01/2008 20:00
Avatar van kickasgamer PHP ver gevorderde maar die tekst oneindig krijg ik oo als er geen exception handling is 
Offline Abbas - 05/01/2008 20:05 (laatste wijziging 05/01/2008 20:19)
Avatar van Abbas Gouden medaille

Crew .NET
Stuur je gehele project door in een ZIP-je...

Edit: Ik heb je programma getest en alles werkt hoor! Er komt alleen "oneindig" in het tekstvak als je deelt door 0...
Offline kickasgamer - 06/01/2008 11:17
Avatar van kickasgamer PHP ver gevorderde ok dus ik hoef geen exception handling te doen ?

oh ja en ik wil men rekenmachine nog iets uit breiden met toetsgevoeligheid, zodat ls ik de cijfers via mijn toetsenbord in tik dat ze ook op het scherm aan geklikt worden en verschijnen

ik heb deze tutorial gevonden: http://www.vbexplorer.com/VBExplorer/userinput.asp

maar ik weet niet goed hoe ik dan, als op die toest gedrukt is, hoe ik dan de input moet op het scherm laten verschijnen
Offline Abbas - 06/01/2008 11:46
Avatar van Abbas Gouden medaille

Crew .NET
Citaat:
ok dus ik hoef geen exception handling te doen ?
Jawel, maar dat doe je toch met die Try-Catch?! En ik heb dat getest en het werkt correct! 

Naar het andere kijk ik straks, eerst studeren nog... 

Offline Wim - 06/01/2008 12:26 (laatste wijziging 06/01/2008 12:27)
Avatar van Wim Crew algemeen GetKeyState(vbKeyA) And KEY_DOWN

als die 2 dingen waar zijn dan is er op de knop gedrukt, gewoon met een ifje dus?
Offline kickasgamer - 06/01/2008 13:42 (laatste wijziging 06/01/2008 13:44)
Avatar van kickasgamer PHP ver gevorderde dus bv zo ?

  1. Private Sub nr0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr0.Click
  2. if Getkeystate(vbKey0) And KEY_DOWN Then
  3. If verder_nieuw = True Then
  4. display.Clear()
  5. End If
  6. display.Text = display.Text & nr0.Text
  7. verder_nieuw = False
  8. End if
  9. End Sub


@titjes: ik heb jou normaal de versie door gestuurt zonder error handling, en ik heb het hei rook nog eens getest zonder try catch geeft hij oneindig in de display 
Offline Abbas - 06/01/2008 18:40
Avatar van Abbas Gouden medaille

Crew .NET
Citaat:
@titjes: ik heb jou normaal de versie door gestuurt zonder error handling, en ik heb het hei rook nog eens getest zonder try catch geeft hij oneindig in de display
Daarom dat je WEL die try-catch moet gebruiken...:)
Offline kickasgamer - 06/01/2008 18:43
Avatar van kickasgamer PHP ver gevorderde ah maar is oneindig dan geen goede weergave voor het dividebyzero error ?

en is de code die ik in mijn vorige post zette goed ?
Offline Ibrahim - 07/01/2008 19:16
Avatar van Ibrahim PHP expert btw, is die code van die If/else if lussen niet beter om een switch( ) functie te gebruiken ? of heeft .NET die kracht niet titjes ?
Offline Abbas - 07/01/2008 19:33
Avatar van Abbas Gouden medaille

Crew .NET
Wat bazel je nu! Die if-else is met booleans! En ter informatie: .NET heeft ook de switch functie!!! 
Voorbeeld:
  1. Dim naam As String = "titjes"
  2.  
  3. Select Case naam
  4. Case "titjes"
  5. Response.Write("BAAS")
  6. Case "Psycho"
  7. Response.Write("NOOB")
  8. End Select
Offline Ibrahim - 07/01/2008 19:41
Avatar van Ibrahim PHP expert en als de if else met booleans zijn ?

ow ik snap het, .NET kan alleen strings en getallen afhandelen 
Offline Abbas - 07/01/2008 20:16
Avatar van Abbas Gouden medaille

Crew .NET
Dat gaat hem daar niet om maar je kan in een boolean maar twee waardes steken: true of false. En je hebt vier mogelijkheden: plus, min, maal, delen. Hoe kan je dat dan doen met switch? Dat kan je ook niet met PHP!

Hetgeen hij had kunnen doen was 1 variabele als string gebruiken, "bewerking" bijvoorbeeld en dan ging dat wel!

  1. Dim bewerking As String
  2. 'Als je dan op een knop klikt krijgt "bewerking" de bewerking van die knop en dan kan je zo doen:
  3. Select Case bewerking
  4. Case "plus"
  5. totaal2 = totaal1 + Convert.ToDouble(display.Text)
  6. Case "min"
  7. totaal2 = totaal1 - Convert.ToDouble(display.Text)
  8. Case "maal"
  9. totaal2 = totaal1 * Convert.ToDouble(display.Text)
  10. Case "deel"
  11. totaal2 = totaal1 / Convert.ToDouble(display.Text)
  12. End Select

Voila! Dus je hebt volledig ONGELIJK... 
Offline Ibrahim - 07/01/2008 20:25 (laatste wijziging 07/01/2008 20:25)
Avatar van Ibrahim PHP expert nee, jij doet teveel moeite, jij gebruikt niet de pattern DRY (Don't repeat yourself, een voorbeeldje (dood me niet als ik foute .NET code schrijf )

  1. public uitrekenen( manier )
  2. {
  3. return totaal1 / Convert.ToDouble(display.Text)
  4. }
  5.  
  6. // al die ifjes enz. hierzo maar dan ipv die lange code gewoon functie hierboven aanroepen

DRY ( DON'T REPEAT YOURSELF )

:cool:

Edit:

En hij kan beter de code herschrijven zodat hij de bewerking in 1 variabele heeft zoals jij het zegt, zodat die ifjes zelfs onnodig zijn heb je weer een aantal regels bespaard.
Offline Abbas - 07/01/2008 20:36
Avatar van Abbas Gouden medaille

Crew .NET
  1. public uitrekenen( manier )
  2. {
  3. return totaal1 / Convert.ToDouble(display.Text)
  4. }

En wat zou deze code moeten doen???
Offline kickasgamer - 07/01/2008 20:40
Avatar van kickasgamer PHP ver gevorderde en werkt deze code ook , want dan zou mijn rekenmachin echt af zijn 

  1. Private Sub nr0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr0.Click
  2. if Getkeystate(vbKey0) And KEY_DOWN Then
  3. If verder_nieuw = True Then
  4. display.Clear()
  5. End If
  6. display.Text = display.Text & nr0.Text
  7. verder_nieuw = False
  8. End if
  9. End Sub
Offline Abbas - 07/01/2008 20:42
Avatar van Abbas Gouden medaille

Crew .NET
Aan die code is op zich niets mis dus die zou moeten werken. Test het eens uit en als er iets niet werkt mag je dat melden. 
Offline Ibrahim - 07/01/2008 20:52
Avatar van Ibrahim PHP expert ik moet me diep schamen 

  1. public uitrekenen( manier )
  2. {
  3. return totaal1 manier Convert.ToDouble(display.Text)
  4. }
Offline Abbas - 07/01/2008 20:53
Avatar van Abbas Gouden medaille

Crew .NET
Citaat:
ik moet me diep schamen
Inderdaad!
Maar dat gaat dus niet op die manier! 
Offline kickasgamer - 07/01/2008 20:57
Avatar van kickasgamer PHP ver gevorderde nu krijg ik volgende error: statement is not in avalid namespace

  1. Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer


ik krijg nog wel een paar error maar dat is omdat die functie nog niet bestaat
Offline Abbas - 07/01/2008 20:58
Avatar van Abbas Gouden medaille

Crew .NET
Post volledige code op plaatscode en dan kan ik meer doen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.247s