Eccezioni non gestite domanda da somaro

giovedì 15 febbraio 2007 - 18.53

bule Profilo | Junior Member

ciao a tutti io avrei la seguente domanda probabilmente assai stupida..

esiste un modo per catturare le eccezzioni non gestite ? nel senso se nel mio programma si verifica un'eccezzione che non avevo considerato come faccio a intercettarla in modo da stoppare il mio programma senza far venire fuori il messaggio di errore o senza bloccare indefinitivamnte il programma?

pieroalampi Profilo | Expert

se ho capito bene puoi provare con try e catch


Try
'qui inserisci la routine che deve correre
Catch eccezionifiltro As Exception 'qui il tipo di Exception

qui inserisci quello che deve fare una volta incappato nell'Exception..
MsgBox("trovata eccezione", MsgBoxStyle.Exclamation)

End Try
spero di esserti stato utile

vb.net
------------------------------------------------------
::::Sempre a manetta in curva::::
------------------------------------------------------

bule Profilo | Junior Member

si conoscevo il try e catch ma io volevo un sistema per intercettare quelle eccezzioni che si verificano senza che io le avessi mai gestite..cioè senza che fossero inserite nel try catch..

Pongo Profilo | Senior Member

Già provato con il debug?

Comunque un programma che lancia un'eccezione non gestita termina, almeno da quel che ho ne so io.

bule Profilo | Junior Member

si termina ma lancia un bruttissimo messaggio di errore all'utente io vorrei farlo terminare senza che l'utente veda niente...
in modo brusco e quasi indolore, cioè vorrei che ad ogni eccezzione non gestita venisse chiamato un application.exit()..
in pratica vorrei tentare di gestire le eccezzioni non gestite...

Pongo Profilo | Senior Member

Provato un un blocco try "globale" che comprende tutto il codice e poi lancia in sequenza le varie exception controllate e in fondo un error?



bule Profilo | Junior Member

difatti è quello che vorrei fare ... ma siccome il progetto aha più classi e più metodi volevo sapere appunto dove mettere o come mettere un gestore di eccezione in modo da controllare tutto il programma in modo da non mettere un try catch in ogni blocco di codice, sempre se questo si può fare ...

Pongo Profilo | Senior Member

Beh, non conoscendo la struttura del tuo progetto non so bene cosa dirti, però avrai di sicuro un main(){.....}, prova a metterlo lì.

Adesso non ho qui il VS 2005 e non posso provare, quiandi non vorrei dirti fregnacce, ma prova nelle classi a non gestire errori ma metterli come throwable, cosi che vengano lanciati e poi catturati quando utilizzi qualla classe nel main() dentro il blocco try catch.

bule Profilo | Junior Member

si nel file program.cs creato da VS2005 c'è il main che subito chiama un'apllication.run(new Form1)

dove il form1 è il main form del programma se io ci metto un try catch li nel application run vengono gestiti gli errori non gestiti( che giro di parole) che si verificano al load del form1...ma se il form è caricato e io metto un errore che ne so al click di un bottone questo non viene intercettato dal blocco catch del main...stesso dicasi se l'errore si verifica in un eventuale form2 creato da form1...

ho sentito del throwable ma penso sia una cosa solo di java non di c#

Pongo Profilo | Senior Member

http://msdn2.microsoft.com/en-us/library/1ah5wsex.aspx

Prova a dare un occhio! Usi il throw senza il try catch e poi la catturi sul "main".

bule Profilo | Junior Member

grazie mille ora prova , speriam bene...ciao

civetta Profilo | Newbie

Dai un'occhiata agli esempi nella documentazione sulla classe Application e
Application.ThreadException. Io ho risolto così.
Ciao
Tra il BIANCO (0) e il NERO (1) ammira le sfumature dell'arcobaleno.

bule Profilo | Junior Member

sin è vero e poi tra una cosa e l'altra mi son dimenticato di scrivere come avevo risolto: nel file program, dentro il main e prima dell application.run(new Form1);

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);

e poi furi dal main

private static void OnUnhandledException(Object sender, UnhandledExceptionEventArgs e)
{
//quello che vuoi che succeda quando si verifica un eccezzione non gestita
//es application.exit()
}
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5