Jeter l'Exception VS Retour d'Erreur dans un Try,Catch,finally

Je suis assez sûr que je connais déjà la réponse, mais je suis toujours curieux de ce que l'opinion est dans la manipulation d'une erreur dans un Try,Catch,finally bloc -- mais quand vous êtes à la répéter.

BTW - je ne parle pas de l'Entrée de l'Utilisateur - mais en utilisant que pour un exemple parce qu'il est clair et court

Considérer ce morceau de code...

try {    
    if (success) {
        return someSuccessMessage;
    }
    else {
        logError("User input not correct format");
        return someErrorMessage; //repeats itself
    }
}
catch (Exception ex) {
    logError(ex.Message);
    return someErrorMessage; //repeats itself
}

Dire que nous avons une fonction, que si elle échoue, nous voulons retourner un message d'erreur parce que l'exception n'est pas pertinent; notre fonction n'a pas réussi et que l'utilisateur n'a pas besoin de détail supplémentaire.

J'ai toujours eu la conviction que, si vous pouvez gérer l'erreur, éviter l'exception -- car il n'est pas exceptionnel, mais j'ai demandé l'avis à propos en évitant de se répéter... Vous pouvez faire ce qui suit pour éviter de vous répéter...

try {    
    if (success) {
        return someSuccessMessage;
    }
    else {
        throw new Exception("User input not correct format");
    }
}
catch (Exception ex) {
    logError(ex.Message);
    return someErrorMessage;
}

Ce n'est pas le meilleur exemple, mais j'allais pour des raisons de concision pour faire le point de la répétition du code.

Exceptions sont connus pour subir une perte de performance, mais ce sont les pensées à propos de ce genre de situation?

C'est un exemple classique de l'abus des exceptions pour le contrôle de flux, discuté ici Pourquoi ne pas utiliser des exceptions comme flux régulier de contrôle?

OriginalL'auteur Hugoware | 2009-07-10