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(Összetevő comp, int id, Kulcsok beállítása) {

        { Comp.setFocusTraversalKeys (azonosító, kulcsok);} fogás (IllegalArgumentKivétel:) {
            ...
        } }

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: