Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.Net] - Funzione Gestioni errori globale

    Ciao ragazzi mi chiedevo....esiste per caso una classe...o una funzione che consente di gestire gli errori in qualsiasi porzione del codice senza dover incollare la gestione caso per caso...

    tipo un "handler" che mi tiene d'occhio il software ovunque io sia e se scatta l'eccezione me la gestisce (in modo generico intendo) e mi evita il crash del programma!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Personalmente, sconsiglio di utilizzare questo genere di pratica perché è sempre meglio delegare la gestione di un errore a uno specifico blocco Try...Catch preposto a questo scopo.

    Ad ogni modo, forse potresti dare un'occhiata all'evento Application.ThreadException.

    In generale, poi, esistono componenti di terze parti per gestire questa problematica a livello molto alto, ad esempio inviando automaticamente la segnalazione dell'errore a un bug tracker conosciuto, o a un indirizzo email, per mettere a conoscenza del bug lo sviluppatore che così può prendere i relativi provvedimenti.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Prova a vedere qui, quando parla del My.Application

    Comunque sconsiglio anch'io questa tecnica in quanto si può fare poco più che segnalare l'errore alll'utente.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    scusate ma non ho ancora capito come muovermi

    Il motivo per il quale vorrei gestire io la segnalazione è per evitare che il programma crashi!
    Vi faccio une esempio! Se mi da un errore me lo segnala con la classica finestrella coi dettagli e mi dice: Chiudi o Continua. Se continuo non funziona più nulla se clicco "chiudi" non chiude nulla (questo sul Win 7 64bit) e devo avviare il task manager ecc ecc

    Invece io vorrei che l'errore fosse si segnalato ma che non succedesse sto ambaradan...tipo mettere un exit sub o cose del genere dopo l'errore...

    non so se mi son spiegata bene come al solito è un macello esporre il problema

  5. #5
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Hai due scelte:
    1)-Apri il tuo progetto, vai su Esplora Soluzioni->My Project->Applicazione->Visualizza Eventi Applicazione e leggi le righe del commento.
    2)-Per ogni routine metti un Try...Catch...Finally

    A te la scelta, ma tieni conto che se scegli la prima potrebbero esserci una seria di conseguenze a catena sulla tua applicazione.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il fatto che su Continua il programma non continui potrebbe essere dovuto a una gestione errata delle eccezioni, che in alcuni casi tollera uno stato non congruente del programma.

    In genere, almeno per quanto riguarda la mia esperienza, la possibilità di continuare difficilmente fa crashare il programma, poiché la finestra viene mostrata al sollevamento di un'eccezione con la quale si risale lo stack delle chiamate fino al ripristino delle condizioni di normalità.

    E' possibile quindi che vi sia qualche oggetto che viene modificato nel proprio stato e, a causa dell'errore (che sia gestito o no), questo rimanga nello stato intermedio o non valido impedendo al programma di funzionare correttamente nonostante la prosecuzione.

    Per evitare infine la finestra dell'errore, è sufficiente gestire nel modo opportuno (con le modalità già suggerite) gli errori più frequenti evitando che siano presentati come eccezioni non gestite.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Metti all'inizio:

    On Error Resume Next

    è un po obsoleto come codice ma funziona, devi togliere i try catch da quella sub ovviamente ...

  8. #8
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Originariamente inviato da StefanoV
    Metti all'inizio:

    On Error Resume Next

    è un po obsoleto come codice ma funziona, devi togliere i try catch da quella sub ovviamente ...
    Un pò obsoleto??
    Questa è roba da vb6: in VB.NET è molto più corretto ed appropriato usare il Try...Catch...Finally.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  9. #9
    Originariamente inviato da ShaleN
    Un pò obsoleto??
    Questa è roba da vb6: in VB.NET è molto più corretto ed appropriato usare il Try...Catch...Finally.

    Lo so, appunto ho detto che è obsoleto

    Però è l'unico modo per gestire gli errori in tutta la sub senza usare try catch in ogni parte del codice...

  10. #10
    Con "On Error Resume Next" non gestisci l'errore, diciamo che lo ignori. IMHO andrebbe usato solo se si è sicuri. Non è da sostituire al Try...Cath
    Comunque, a parte l'utilizzo del Try...Catch che ti permette di gestire tutte le eccezioni nelle singole funzioni(metodo migliore), io uso
    AddHandler Application.ThreadException, AddressOf GestoreEccezioni
    Public Sub GestoreEccezioni(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)
    'Qui ci metti tutta la gestione delle eccezioni non gestite nelle funzioni, con la possibilità di continuare a lavorare(rischiando di lavorare in uno stato di incoerenza e perdere tutto) o di uscire dall'applicazione.
    End sub

    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.