Dans l'ensemble, l'utilisation de try / catch est obsolète, car le bloc catch est si cher du point de vue des ressources. L'essai / capture me rappelle la gestion des risques . La gestion des risques a deux dimensions:
- La probabilité que le risque se produise
- Les dégâts qu'il peut avoir
Maintenant, si vous sortez de votre maison, un piano qui vous tombe sur la tête quelque part alors est peu probable (peut-être 0,001%), mais peut vous tuer.
La gestion des exceptions est comme ça. Essayer le bloc n'est pas cher. Mais le bloc catch est vraiment cher, car il doit créer une table de trace de pile et faire d'autres choses. Par conséquent, en prenant une décision concernant les blocs try / catch, vous devez considérer le nombre de fois où vous avez probablement frappé le bloc catch. Si parmi 10 000 utilisations, vous ne le touchez qu'une seule fois, puis utilisez-le. Mais s'il s'agit d'un formulaire et que l'utilisateur ne le remplit probablement pas correctement 50% de fois, vous devez éviter d'y mettre un bloc try / catch.
Dans les endroits où la probabilité d'occurrence d'exception est élevé, il est recommandé d'utiliser des if {} else {}
blocs pour éviter l' apparition d'exception. Par exemple, où vous souhaitez diviser deux nombres, au lieu d'écrire:
try
{
int result = a/b;
}
catch (DivisionByZeroException ex)
{
// Showing a message here, and logging of course.
}
vous devez écrire:
if (b == 0)
{
int result = a/b;
}
else
{
// Showing a message to user to change the value of b, etc.
}