Java 8 引入了运行时异常的行为更改,当 keystrokes 自变量包含类型不是 AWTKeyStroke 的对象时,java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) 和 java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) 方法会抛出这些异常。在 Java 8 中,这些方法将对该错误抛出 ClassCastException 而不是 IllegalArgumentException。
当方法调用的两边存在具有 IllegalArgumentException 的 catch 子句的 try 语句时,此规则会标记对 setFocusTraversalKeys 和 setDefaultFocusTraversalKeys 方法的调用。
以下示例显示了已标记的 setFocusTraversalKeys 方法。
public static void testSetFocusTraversal(Component comp , int id , Set keys) {
try { comp.setFocal TraversalKeys (id , keys);} catch (IllegalArgumentException iae) {
...
} }
由于 Java 文档中描述的其他原因,setFocusTraversalKeys 和 setDefaultFocusTraversalKeys 方法仍会抛出 IllegalArgumentException。请评估 catch 块中的逻辑以查看您是否还需要处理 ClassCastException 或更通用的运行时异常类型。
有关这些类的更多信息,请参阅以下资源: