Изменение логики исключительных ситуаций при настройке клавиш перемещения фокуса ввода в AWT

В Java 8 изменилась логика исключительных ситуаций времени выполнения в методах java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) и java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes), когда параметр keystrokes содержит объекты не типа AWTKeyStroke. В Java 8 методы выбрасывают ClassCastException, а не IllegalArgumentException для этой ошибки.

Это правило помечает вызовы методов setFocusTraversalKeys и setDefaultFocusTraversalKeys, когда вызов находится в блоке try с блоком catch для IllegalArgumentException.

В следующем примере показан метод setFocusTraversalKeys, который помечается.

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

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

В других случаях методы setFocusTraversalKeys и setDefaultFocusTraversalKeys по-прежнему выбрасывают IllegalArgumentException (см. документацию Java). Проверьте логику блока catch и определите, требуется ли обработка ClassCastException или более общего типа исключительной ситуации времени выполнения.

Дополнительную информацию об этих классах можно найти в следующих ресурсах: