La plupart des méthodes de STree manipulant des sous-arbres
testent si l'arbre est vide et utilisent ensuite directement les variables
d'instance pour récupérer les sous-arbres, plutôt que
les accesseurs. En effet, utiliser les accesseurs oblige à tenir
compte de l'éventuelle levée d'un exception EmptyTreeException,
alors que le test de l'arbre non vide garantit qu'une telle levée
ne peut survenir. Une alternative à cette programmation est montrée
ci-dessous pour isLeaf(). Elle consiste à ne pas tester
si l'arbre est vide et à capturer l'exception EmptyTreeException
pour renvoyer le résultat dans le cas de l'arbre vide.
public boolean isLeaf() {
try {
return left().isEmpty()
&& right().isEmpty();
catch (EmptyTreeException e) {
return false;
}
}