Help Eccezione in VB 2010

di il
6 risposte

Help Eccezione in VB 2010

Ciao a tutti

Ho un problema: vorrei creare un programma con VB 2010 che trasformi un numero decimale in una frazione, anche se per ora mi sono occupato solo dei decimali normali non periodici.
La grafica è molto semplice ( un bottone e una casella di testo XD ) e ho scritto questo codice ( scusate se è rozzo e brutto ma sono i primi programmi che faccio ) , solo che avviando il debug mi dà un Invalid.Operation.Exception che non so come gestire.

Il codice è questo (ripeto, scusate per la bruttezza, i consigli sono stra ben accetti ):

ublic Class Form1

Dim a As Double = TextBox1.Text
Dim WholeNumber As Integer = Fix(a)
Dim NumberDecimal As Double = a - WholeNumber
Dim Numeratore As Integer
Dim Denominatore As Integer
Dim ZeriDenominatore As String

Public Sub NormalDecimal()
If Len(NumberDecimal.ToString) = 1 Then
ZeriDenominatore = "0"
ElseIf Len(NumberDecimal.ToString) = 2 Then
ZeriDenominatore = "00"
ElseIf Len(NumberDecimal.ToString) = 3 Then
ZeriDenominatore = "000"
ElseIf Len(NumberDecimal.ToString) = 4 Then
ZeriDenominatore = "0000"
ElseIf Len(NumberDecimal.ToString) = 5 Then
ZeriDenominatore = "00000"
ElseIf Len(NumberDecimal.ToString) = 6 Then
ZeriDenominatore = "000000"
ElseIf Len(NumberDecimal.ToString) = 7 Then
ZeriDenominatore = "0000000"
ElseIf Len(NumberDecimal.ToString) = 8 Then
ZeriDenominatore = "00000000"
ElseIf Len(NumberDecimal.ToString) = 9 Then
ZeriDenominatore = "000000000"
Else : Close()
End If
If Len(NumberDecimal.ToString) < 10 Then
Numeratore = CInt(a.ToString - ",")
Denominatore = CInt("1" & ZeriDenominatore)
Else : Close()
End If
TextBox1.Text = Numeratore.ToString \ Denominatore.ToString

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
NormalDecimal()
End Sub

End Class


Cos'è che genera l'eccezione è come posso gestirla?? grazie mille in anticipo per la risposta

6 Risposte

  • Re: Help Eccezione in VB 2010

    Ciao Lol^2,
    qundo posti del codice racchiudilo nei tag code (c'è un bottoncino dove scrivi il messaggio).

    Le eccezioni sono un meccanismo per la gestione degli errori che devi assolutamente conoscere se vuoi usare il .NetFramework, in poche righe posso solo darti qualche indicazione.

    Quando il sistema incontra un errore (divisione per zero, file che non esiste ecc.) lancia un' eccezione, avvero avvia un meccanismo che se non gestito porta alla chiusura del programma.

    Caratteristica delle eccezioni è quella di risalire la sequenza delle chiamate, per cui puoi mettere il gestore nel punto più adatto. Per intercettare una eccezione devi usare Try ... Catch ovvero racchiudi il pezzo di codice che può sollevare l' eccezione tra queste due istruzioni. In pratica:
    
     Try  
        Dim a As Integer = 1  
        Dim b As Integer = 0
        a = a \ b        
     Catch ex As Exception 
        MsgBox("Divisione per zero) 
     End Try
    
    Ci sarebbe molto altro da dire, per ora ti auguro buono studio.
  • Re: Help Eccezione in VB 2010

    Ciao Barba, innanzitutto grazie dell'aiuto.
    Comunque, sapevo che cosa sono le eccezioni, ma non sapevo come gestirle.
    Adesso ho provato a "catturare" tutto ciò che potrebbe generarmi un'eccezione ( ogni singola variabile che può avere valore nothing ) però continua ad apparirmi il messaggio di IOexception.....
    Sto impazzendo!! Non è che può essere qualcos'altro??
  • Re: Help Eccezione in VB 2010

    Nel menu Debug/Exceptions metti una crocetta su tutti i check box 'Thrown' e poi lancia il programma da VisualStudio, il programma si arresterà sulla riga che lacia l' eccezione (quando hai finito togli le crocette).

    Poi verificherai che la riga non è intercettata da nessun try catch.

    Oppure sai già quale riga ti da il problema?

    Comunque IOException dovrebbe avere a che fare con i file, casa dice il testo dell' eccezione?
  • Re: Help Eccezione in VB 2010

    Allora... La riga su cui si arresta è
    Dim a As Double = TextBox1.Text
    Il testo dell'eccezione è:
    NullReferenceException
    {"Riferimento a un oggetto non impostato su un'istanza di oggetto."}

    Io ho già messo un try - catch in cui metto a = nothing come eccezione, ma niente, continua a darmi eccezione
  • Re: Help Eccezione in VB 2010

    Non è che magari è TextBox1 a Nothing? dove hai scritto quella riga?
    Poi potresti togliere il 'a = Nothing' e intercettare tutto.
  • Re: Help Eccezione in VB 2010

    Ci sono riuscito!!!
    Anzichè mettere subito una variabili = a qualcosa all'inizio della classe, le uguaglio dentro ad un try - catch, così mi "intercetta" l'eccezione
    Grazie mille dell'aiuto e della pazienza
Devi accedere o registrarti per scrivere nel forum
6 risposte