Mudança de comportamento em exceções ao configurar chaves focus traversal AWT

O Java 8 introduz uma mudança de comportamento para as exceções de tempo de execução que são lançadas pelos métodos java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) e java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) quando o argumento keystrokes contém objetos que não são do tipo AWTKeyStroke. No Java 8, os métodos lançam um ClassCastException em vez de IllegalArgumentException para esse erro.

Essa regra sinaliza chamadas para os métodos setFocusTraversalKeys e setDefaultFocusTraversalKeys quando a chamada de método é circundada por uma instrução try com uma cláusula catch para IllegalArgumentException.

O exemplo a seguir mostra um método setFocusTraversalKeys que está sinalizado.

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

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

Os métodos setFocusTraversalKeys e setDefaultFocusTraversalKeys ainda lançam IllegalArgumentException por outras razões, conforme descrito na documentação Java. Avalie a lógica em seu bloco catch para ver se é necessário manipular também o ClassCastException ou um tipo de exceção de tempo de execução mais geral.

Para obter mais informações sobre essas classes, veja os recursos a seguir: