Arbres binaires fonctionnels (Stree.java, EmptyTreeException.java, TestSTree.java)

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;
    }
}