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
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.
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 finally
will 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.
+1 pour mentionner que StackOverflowException pièce –
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 ...);) –
ce qui se passe l'exception survient dans le bloc catch ... encore le finalement va s'exécuter? – NoviceToDotNet
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
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. –
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