Cambio de comportamiento en las excepciones al definir teclas transversales de foco de AWT

Java 8 incorpora un cambio de comportamiento para las excepciones de tiempo de ejecución que son emitidas por los métodos java.awt.Component.setFocusTraversalKeys(intid,Set<? extends AWTKeyStroke> keystrokes) y java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) cuando el argumento keystrokes contiene objetos cuyo tipo no es AWTKeyStroke. En Java 8, los métodos emiten una excepción ClassCastException en lugar de IllegalArgumentException para este error.

Esta regla señala las llamadas a los métodos setFocusTraversalKeys y setDefaultFocusTraversalKeys cuando la llamada al método está rodeada por una sentencia try con una cláusula catch para IllegalArgumentException.

El ejemplo siguiente muestra un método setFocusTraversalKeys que es detectado por la regla.

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

        try { comp.setFocusTraversalKeys (id, keys);} catch (IllegalArgumentExcepción iae) {
            ...
        } }

Los métodos setFocusTraversalKeys y setDefaultFocusTraversalKeys todavía emiten una excepción IllegalArgumentException por otras razones, tal como se describe en la documentación de Java. Analice el código del bloque catch para ver si necesita también tratar las excepciones ClassCastException o un tipo más general de excepción de tiempo de ejecución.

Para obtener más información sobre estas clases, consulte los recursos siguientes: