Modificarea comportamentului în excepţii la setarea cheilor transversale de focalizare AWT

Java 8 introduce o modificare de comportament pentru excepţiile de runtime care sunt aruncate de metodele java.awt.Component.setFocusTraversalKeys(int id, Set<? AWTKeyStroke> keystrokes) şi java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) când argumentul keystrokes conţine obiecte care nu sunt de tipul AWTKeyStroke. În Java 8, metodele aruncă o ClassCastException în loc de IllegalArgumentException pentru această eroare.

Această regulă semnalează apelurile la metodele setFocusTraversalKeys şi setDefaultFocusTraversalKeys când apelul la metodă este înconjurat de o instrucţiune try cu o clauză catch pentru IllegalArgumentException.

Următorul exemplu arată o metodă setFocusTraversalKeys care este semnalată.

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

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

Metodele setFocusTraversalKeys şi setDefaultFocusTraversalKeys încă aruncă IllegalArgumentException din alte motive, aşa cum este descris în documentaţia Java. Evaluaţi logica din blocul dumneavoastră catch pentru a vedea dacă trebuie să trataţi şi ClassCastException sau un tip general de excepţie la runtime.

Pentru informaţii suplimentare despre aceste clase, consultaţi următoarele resurse: