Verze Java 8 zavádí změny chování pro výjimky za běhu, které jsou vyvolány metodami java.awt.Component.setFocusTraversalKeys(int id, Set <? extends AWTKeyStroke> keystrokes) a java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes), když argument keystrokes obsahuje objekty, které nejsou typu AWTKeyStroke.
V prostředí Java 8 generují metody pro tuto chybu místo IllegalArgumentException výjimku ClassCastException.
Toto pravidlo značí volání metod setFocusTraversalKeys a setDefaultFocusTraversalKeys, když je volání metody obklopeno příkazem try s klauzulí catch pro IllegalArgumentException.
Následující příklad ukazuje metodu setFocusTraversalKeys, která je označena.
veřejný statický void testSetFocusTraversal(Component comp, int id, Set keys) {
zkusit { comp.setFocusTraversalKeys (id, klíče);} catch (IllegalArgumentVýjimka iae) {
...
} }
Metody setFocusTraversalKeys a setDefaultFocusTraversalKeys stále generují IllegalArgumentException z jiných důvodů, jak je popsáno v dokumentaci Java. Vyhodnoťte logiku v bloku catch, abyste zjistili, zda potřebujete zpracovat také ClassCastException nebo obecnější typ výjimky za běhu.
Další informace o těchto třídách viz následující prostředky: