Lequel :
OU
Il dépend. Si vous utilisez Windows Communication Foundation (WCF), using(...) { try... }
ne fonctionnera pas correctement si le proxy en using
déclaration d'état d'exception, c'est à dire l'Élimination de ce proxy va provoquer une autre exception.
Personnellement, je crois en un minimum de manipulation, à savoir une poignée de seule exception que vous êtes conscient de sur le point de l'exécution. En d'autres mots, si vous savez que l'initialisation d'une variable en using
peut lancer une exception, je l'envelopper avec try-catch
. De même, si, dans using
corps quelque chose qui peut arriver, ce qui n'est pas directement liée à la variable en using
, puis je l'envelopper avec un autre try
de cette exception. J'utilise rarement, Exception
mon catch
es.
Mais je ne voudrais IDisposable
et using
bien donc je suis peut-être biaisé.
Si votre instruction catch a besoin d'accéder à la variable déclarée dans une instruction d'utilisation, puis à l'intérieur est votre seule option.
Si votre instruction catch a besoin de l'objet référencé dans l'aide avant qu'il ne soit éliminé, alors à l'intérieur est votre seule option.
Si votre instruction catch prend une action de durée inconnue, comme l'affichage d'un message à l'utilisateur, et que vous souhaitez vous débarrasser de vos ressources avant que cela arrive, puis à l'extérieur est votre meilleure option.
A chaque fois que je scenerio semblables à ceci, le bloc try-catch est généralement dans une autre méthode plus haut dans la pile des appels à partir de l'utilisation. Il n'est pas typique pour une méthode pour savoir comment gérer les exceptions qui se produisent à l'intérieur comme ça.
Donc, ma recommandation est à l'extérieur-chemin à l'extérieur.
private void saveButton_Click(object sender, EventArgs args)
{
try
{
SaveFile(myFile); // The using statement will appear somewhere in here.
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.