2010-10-17 4 views
5

Je veux savoir enfin bloquer exécuter encore dans la gestion des exceptions même s'il n'y a pas de bloc catch correspondant pour le bloc try et si non alors que se passe-t-il? Aussi je veux maintenant l'exception du système et de l'applicationgestion des exceptions dans C#

Répondre

13

Oui, vous n'avez pas besoin d'un bloc catch du tout. Le bloc finally est toujours exécuté. Pour la différence entre System.Exception et System.ApplicationException: Exception est la classe de base pour toutes les exceptions; ApplicationException doit être utilisé lorsqu'une erreur d'application non fatale se produit. Voir le MSDN documentation.

Voir aussi best practices for handling exceptions.

+0

que vous voulez dire après l'exécution du bloc finally l'exception sera levée et le programme se terminera? (quand il n'y a pas de bloc catch correspondant) – NoviceToDotNet

+0

Eh bien, oui et non. L'exception sera levée, mais il pourrait y avoir un autre bloc try-catch entourant l'appel à celui-ci, auquel cas le try-catch de plus haut niveau attrapera cette exception. –

+2

En passant, n'utilisez pas 'ApplicationException'. C'est obsolète. Utilisez une exception appropriée dérivée de System.Exception (ou dérivez la vôtre) à la place. – mtreit

4

Comme mentionné précédemment, finally fonctionnera même s'il n'y a pas de bloc catch. Ceci prend en charge le de Java et enfin le modèle (qui peut être obtenu en utilisant IDisposable et using).

Une exception (voir ce que je faisais là-bas?) est quand un StackOverflowException est jeté dans ce cas, le bloc finallywill not run (ne serait un catch si l'on présente).

Les (soit proprement ou en lançant une exception) finally exécute bloc après le bloc finalise try que vous attendez de son emplacement dans le code.

+0

+1 pour mentionner que StackOverflowException pièce –

+0

P.S. J'aime la façon dont les deux Israéliens qui répondent à cette question sont tous deux représentés portant un enfant dans un sac à dos. (Vous ne pouvez pas le voir si bien dans ma photo, mais c'est ce que c'est ...);) –

+0

ce qui se passe l'exception survient dans le bloc catch ... encore le finalement va s'exécuter? – NoviceToDotNet