IOException vs RuntimeException Java

class Y {
    public static void main(String[] args) throws RuntimeException{//Line 1
        try {
            doSomething();
        }
        catch (RuntimeException e) {
            System.out.println(e);
        }
    }
    static void doSomething() throws RuntimeException{ //Line 2
        if (Math.random() > 0.5) throw new RuntimeException(); //Line 3
        throw new IOException();//Line 4
    }
}

Cuando lanzo dos tipos de excepción (IOException en Line4 y RunTimeException en Line3), descubrí que mi programa no se compila hasta que indico "IOException" en mis cláusulas de throw en Line 1 y Line 2.

Mientras que si revierto los "lanzamientos" para indicar que se está lanzando IOException, el programa se compila correctamente como se muestra a continuación.

class Y {
    public static void main(String[] args) throws IOException {//Line1
        try {
            doSomething();
        }
        catch (RuntimeException e) {
            System.out.println(e);
        }
    }
    static void doSomething() throws IOException {//Line 2
        if (Math.random() > 0.5) throw new RuntimeException();//Line 3
        throw new IOException();//Line 4
    }
}

¿Por qué debería usar siempre "throws" para IOException aunque RuntimeException también se lanza (Línea 3)?

Respuesta 1

Estoy tratando de crear una lista de pares clave-valor. Esto es lo que tengo hasta ahora: Map <Integer, String> map = new HashMap <Integer, String> (). Put (songID, songList.get (i) .name); Esto me da el ...

Me encanta el control de acceso en cualquier lenguaje, pero encuentro que en Java casi nunca (si es que alguna vez) uso el modificador de acceso de paquete privado (o la falta del mismo). Me doy cuenta de que las clases internas pueden ser privadas, ...

Tengo una pregunta bastante simple. Escribo un fragmento de código como este: Entero entero = nuevo entero (42); System.out.println (entero); La pregunta es ¿qué ocurrió aquí? Desembalaje automático Entero ...

He logrado hacer esto para los cuadros de diálogo y tostadas, pero ahora ha surgido el problema del menú contextual. ¿Es posible en Android posicionar un menú contextual en una ubicación diferente mediante programación? YO ...