View Full Version : [VB.NET] Gestione degli errori
Traxsung
19-04-2007, 17:41
ho un piccolo problemino con un programmino in VB.
Praticamente ho una textbox dove all'interno devo insereri un valore numerico, e fin qui nessun problema.
Il numero che devo inserire non deve essere negativo, non deve essere nullo, ne tanto meno deve essere una stringa.
Per quanto riguarda la verifica se il numero è nullo (nel senso che non è stato inserito) ho scritto questo codice:
dim numero as double
numero = Convert.ToDouble(textbox1.Text)
if numero = "" Then
Msgbox (" Errore")
End if
Mentre se è negativo
dim numero as double
numero = Convert.ToDouble(textbox1.Text)
if numero < 0 then
Msgbox (" Errore")
End if
In entrambi i casi ottendo errore. Mentre per verificare se è una stringa, non so come fare
Potete aiutarmi ??
Grazie
ho un piccolo problemino con un programmino in VB.
Praticamente ho una textbox dove all'interno devo insereri un valore numerico, e fin qui nessun problema.
Il numero che devo inserire non deve essere negativo, non deve essere nullo, ne tanto meno deve essere una stringa.
Per quanto riguarda la verifica se il numero è nullo (nel senso che non è stato inserito) ho scritto questo codice:
dim numero as double
numero = Convert.ToDouble(textbox1.Text)
if numero = "" Then
Msgbox (" Errore")
End if
Mentre se è negativo
dim numero as double
numero = Convert.ToDouble(textbox1.Text)
if numero < 0 then
Msgbox (" Errore")
End if
In entrambi i casi ottendo errore. Mentre per verificare se è una stringa, non so come fare
Potete aiutarmi ??
Grazie
ciao
ora non ho la possibilità di provare, cmq come prima idea mi viene in mente di
1) mettere Convert.ToDouble(textbox1.Text) in un try/catch
2) se non va in eccezione (stringa di testo oppure stringa nulla, immagino), allora l'utente ha inserito un numero, quindi si può procedere con il controllo del > 0
3) se va in errore, allora sicuramente il convert ha fallito perchè era una stringa, quindi avvertire l'utente
così
dim numero as double
Try
numero = Convert.ToDouble(textbox1.Text)
If numero < 0 Then
Msgbox ("Il numero deve essere maggiore di zero!")
Else
Msgbox ("Tutto ok!")
Catch ex As Exception
Msgbox ("Devi inserire un numero!")
End Try
wingman87
20-04-2007, 20:10
Non esiste più l'IsNumeric?
Traxsung
21-04-2007, 23:43
Gremo ho seguito il tuo consiglio e devo dire che funziona molto molto bene.
Solo che ho un piccolo problema.
nel seguente codice:
dim numero as double
Try
numero = Convert.ToDouble(textbox1.Text)
If numero < 0 Then
Msgbox ("Il numero deve essere maggiore di zero!")
Else
Msgbox ("Tutto ok!") <---- non deve visualizzarlo
Catch ex As Exception
Msgbox ("Devi inserire un numero!")
End Try
Come puoi vedere nel codice (il mio commento :P) vorrei che non visualizzasse
il messaggio però se lo tolgo non esegue poi l'operazione.
fai finta che sotto magari fa delle operazioni con numero... se tolgo la msgbox non me le esegue.
Consigli ??
Einstein
22-04-2007, 19:48
Ti consiglio di considerare il metodo Double.TryParse().
Il blocco Try/Catch dovrebbe essere usato solo per gestire delle eccezioni, cioè dei casi non previsti dal codice. Nel tuo caso puoi gestire il tutto tramite un If/Then, che fa risparmiare al CLR tutta la gestione dell'"infrastruttura" Try/Catch, facendoti guadagnare in prestazioni.
Ti consiglio anche di non usare i metodi inseriti per retrocompatibilità con VB6 come MsgBox: sostituiscilo con MessageBox.Show().
Ciao
Ti consiglio di considerare il metodo Double.TryParse().
Il blocco Try/Catch dovrebbe essere usato solo per gestire delle eccezioni, cioè dei casi non previsti dal codice. Nel tuo caso puoi gestire il tutto tramite un If/Then, che fa risparmiare al CLR tutta la gestione dell'"infrastruttura" Try/Catch, facendoti guadagnare in prestazioni.
Ti consiglio anche di non usare i metodi inseriti per retrocompatibilità con VB6 come MsgBox: sostituiscilo con MessageBox.Show().
Ciao
era la prima soluzione che mi è venuta in mente :)
ho letto Double.TryParse() e va benissimo, non si smette mai di imparare :)
cmq il discorso sulle eccezioni è abbastanza personale
Einstein
24-04-2007, 08:23
cmq il discorso sulle eccezioni è abbastanza personale
In che senso?
In che senso?
nel senso che, se le eccezioni sono per definizione situazioni al runtime non prevedibili, allora in questo particolare caso l'immissione di una stringa in un campo dove ci vanno solo double può essere risolta senza "sbagliare" in questo modo.
o no?
Einstein
24-04-2007, 12:20
In questo caso, sì.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.