Changement de comportement des exceptions lors de la définition des touches de parcours de mise en évidence

Java 8 inclut un changement de comportement pour les exceptions d'exécution émises par les méthodes java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) et java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) lorsque l'argument keystrokes contient des objets qui ne sont pas de type AWTKeyStroke. Dans Java 8, les méthodes émettent une exception ClassCastException et non IllegalArgumentException pour cette erreur.

Cette règle marque les appels de méthode setFocusTraversalKeys et setDefaultFocusTraversalKeys entourés d'une instruction try avec une clause catch pour l'exception IllegalArgumentException.

L'exemple suivant présente une méthode setFocusTraversalKeys qui est marquée.

public static void testSetFocusTraversal(Component comp, int id, Set keys) {

        try { comp.setFocusTraversalKeys (id, keys); } catch (IllegalArgumentException iae) {
            ...
        } }

Les méthodes setFocusTraversalKeys et setDefaultFocusTraversalKeys émettent toujours l'exception IllegalArgumentException pour les autres raisons (voir documentation Java). Evaluez la logique dans votre bloc catch afin de voir s'il est nécessaire de gérer également l'exception ClassCastException ou un type d'exception d'exécution plus général.

Pour plus d'informations sur ces classes, voir les ressources suivantes :