Viselkedésváltozás a kivételekben az AWT fókusz bejárási billentyűk beállításakor

A Java 8 bevezet egy viselkedésváltozást a java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) és a java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) metódusok által dobott futási kivételek esetén, amikor a keystrokes argumentum nem AWTKeyStroke típusú objektomkat tartalmaz. A Java 8 változatban a metódusok e hiba esetén egy ClassCastException kivételt dobnak az IllegalArgumentException kivétel helyett.

Ez a szabály megjelöli a setFocusTraversalKeys és a setDefaultFocusTraversalKeys metódusok hívásait, amikor a metódushívást egy try utasítás foglalja magában, egy catch részkifejezéssel az IllegalArgumentException kivételhez.

A következő példa bemutat egy megjelölt setFocusTraversalKeys metódust.

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

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

A setFocusTraversalKeys és a setDefaultFocusTraversalKeys metódusok továbbra is IllegalArgumentException kivételt dobnak más okok miatt, ahogy a Java dokumentáció leírja. Értékelje ki a catch blokk logikáját, hogy lássa, szükséges-e kezelnie a ClassCastException kivételt is, vagy egy általánosabb futási kivételtípust.

Az érintett osztályokkal kapcsolatos további információkat a következő helyeken talál: