當 java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) 和
java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
方法的 keystrokes 引數中包含的物件不是 AWTKeyStroke 類型時,Java 8 對這些方法所擲出的執行時期異常狀況引進行為變更。
在 Java 8 中,這些方法對於此錯誤會擲出 ClassCastException,而不是 IllegalArgumentException。
當 setFocusTraversalKeys 和
setDefaultFocusTraversalKeys 方法的呼叫以 try 陳述式括住,且其中有 IllegalArgumentException 的 catch 子句時,此規則會標示這些方法呼叫。
下列範例顯示已標示的 setFocusTraversalKeys 方法。
public static void testSetFocusTraversal(Component comp , int id , Set keys) {
try { comp.setFocusTraversalKeys (id , keys);} catch (IllegalArgumentException iae) {
...
} }
針對 Java 說明文件所述的其他原因,setFocusTraversalKeys 和 setDefaultFocusTraversalKeys 方法仍然會擲出 IllegalArgumentException。
請評估 catch 區塊中的邏輯,以決定您是否也需要處理 ClassCastException,或更一般的執行時期異常狀況類型。
如需這些類別的相關資訊,請參閱下列資源: