Zmiana działania w wyjątkach podczas ustawiania kluczy przechodzenia obiektu aktywnego AWT

W języku Java 8 zmieniono działanie wyjątków środowiska wykonawczego, które są zgłaszane przez metody java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) i java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes), gdy argument keystrokes zawiera obiekty typu innego niż AWTKeyStroke. W środowisku Java 8 w przypadku tego błędu metody te zgłaszają wyjątek ClassCastException zamiast IllegalArgumentException.

Ta reguła powoduje oznaczenie wywołań metod setFocusTraversalKeys i setDefaultFocusTraversalKeys, gdy wywołanie metody jest otoczone przez instrukcję try z klauzulą catch dla wyjątku IllegalArgumentException.

W poniższym przykładzie przedstawiono metodę setFocusTraversalKeys, która zostanie oznaczona.

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

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

Metody setFocusTraversalKeys i setDefaultFocusTraversalKeys nadal zgłaszają wyjątek IllegalArgumentException, ale z innych powodów, które są opisane w dokumentacji języka Java. Należy zbadać logikę bloku catch, sprawdzając, czy istnieje konieczność obsługi wyjątku ClassCastException lub bardziej ogólnego typ wyjątku środowiska wykonawczego.

Więcej informacji na temat tych klas zawierają następujące zasoby: