Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    27

    [VB.NET] Gestione errori nell'applicazione

    Sto facendo delle prove per delegare la gestione degli errori che avvengono in routine che non hanno un loro Try Catch.
    L''istruzione che ho messo nella form_Load dovrebbe inviarmi qualsiasi errore alla Sub GestoreEccezioni
    (o perlomeno io pensavo fosse cosi).. Ma in realtà quando scateno un errore di prova, l'IDE ferma l'esecuzione e la gestione dell'errore non viene delegata all'apposita routine.
    Dove sbaglio?

    codice:
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    
            AddHandler Application.ThreadException, AddressOf GestoreEccezioni
    
        End Sub
    
    Public Sub GestoreEccezioni(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)
    
    ' qui non ci va mai...?!?!
           MsgBox("errore gestito da apposita routine!!!")
    
        End Sub
    
        
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
    'provoco l'errore per test        
    Throw New Exception("pippo")
    
        End Sub

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    27
    Ho modificato il codice usando dei moduli ed ora funziona nel senso cheallo scatenarsi dell'errore viene esguita la mia routine. Ma non riesco a capire a cosa serva questa istruzione

    codice:
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
    visto che funziona sia se c'è e sia se non c'è.

    Ecco il codice modificato. Qualsiasi suggerimento è ben accetto
    codice:
    Public Class Form1
    
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Throw New Exception("pippo")
    
        End Sub
    
    End Class
    
    Module ModProgramma
    
        Public Sub main()
    
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
            AddHandler Application.ThreadException, AddressOf ModGestErrori.GestoreEccezioni
            Application.Run(Form1)
    
        End Sub
    
    
    End Module
    
    Module ModGestErrori
    
        Public Sub GestoreEccezioni(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)
    
            MsgBox("errore!!!") 
    ' qui poi implementrò una scrittuta di un log degli errori per eviyare di dover chiedere all'utente
    ' di spiegarmi che errore ha avuto,  quando, ecc ecc
    
        End Sub
    
    End Module
    update: sto impazzendo. ora di nuovo non funziona. Nel senso che l'IDE mi intercetta l'errore . poi premendo continua va finalmente nella routine GestoreEccezioni. Perchè?
    Ultima modifica di Sabotto; 06-04-2020 a 16:03 Motivo: update

  3. #3
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    update: sto impazzendo. ora di nuovo non funziona. Nel senso che l'IDE mi intercetta l'errore . poi premendo continua va finalmente nella routine GestoreEccezioni. Perchè?
    E' corretto, perchè stai eseguendo l'applicazione in debug.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    27
    Quote Originariamente inviata da URANIO Visualizza il messaggio
    E' corretto, perchè stai eseguendo l'applicazione in debug.
    Si ma non capivo perche a volte si ferma prima sull'errore e a volte va direttamente a mio gestore errori. Ho scoperto che dipende dall'opzione "Just My Code" abilitata o meno.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.