On m'a dit qu'il y avait un peu de surcharge dans l'utilisation du mécanisme Java try-catch. Donc, bien qu'il soit nécessaire de mettre des méthodes qui lancent une exception vérifiée dans un bloc try pour gérer l'exception possible, il est conseillé de limiter la taille du bloc try pour ne contenir que les opérations pouvant générer des exceptions.Est-ce que java essaye de bloquer les blocs aussi étroitement que possible?
Je ne suis pas si sûr que c'est une conclusion raisonnable. Considérez les deux implémentations ci-dessous d'une fonction qui traite un fichier texte spécifié.
Même s'il est vrai que le premier entraîne des frais inutiles, je le trouve beaucoup plus facile à suivre. Il est moins clair où exactement les exceptions viennent seulement de regarder les déclarations, mais les commentaires montrent clairement quelles déclarations sont responsables.
La seconde est beaucoup plus longue et compliquée que la première. En particulier, le bon idiome de lecture de ligne du premier doit être modifié pour correspondre à l'appel readLine
dans un bloc try. Quelle est la meilleure pratique pour gérer les exceptions dans une fonction où plusieurs exceptions pourraient être levées dans sa définition?
Celui-ci contient tout le code de traitement dans le bloc try:
void processFile(File f)
{
try
{
// construction of FileReader can throw FileNotFoundException
BufferedReader in = new BufferedReader(new FileReader(f));
// call of readLine can throw IOException
String line;
while ((line = in.readLine()) != null)
{
process(line);
}
}
catch (FileNotFoundException ex)
{
handle(ex);
}
catch (IOException ex)
{
handle(ex);
}
}
Celui-ci ne contient que les méthodes qui jettent des exceptions dans les blocs try:
void processFile(File f)
{
FileReader reader;
try
{
reader = new FileReader(f);
}
catch (FileNotFoundException ex)
{
handle(ex);
return;
}
BufferedReader in = new BufferedReader(reader);
String line;
while (true)
{
try
{
line = in.readLine();
}
catch (IOException ex)
{
handle(ex);
break;
}
if (line == null)
{
break;
}
process(line);
}
}
"Optimisation prématurée" est une expression utilisée pour décrire une situation où un programmeur laisse les considérations de performance affecter la conception d'un morceau de code. Cela peut entraîner une conception qui n'est pas aussi propre qu'elle aurait pu l'être ou un code incorrect, car le code est compliqué par l'optimisation et le programmeur est distrait par l'optimisation. - Wikipedia [http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize] –
"Nous devrions oublier les petites efficacités, disons environ 97% du temps: l'optimisation prématurée est la racine de tous les maux. nos opportunités dans ce 3% critique. " - Knuth [http://stackoverflow.com/questions/211414/is-premature-optimization-really-the-root-of-all-evil] –