Orden de captura de excepciones en Java

Si no me equivoco, las subclases de Excepciones deberían ser capturadas primero. ¿Pero tener que capturar cualquier RuntimeException y una Excepción comprobada concreta, que debería detectarse al principio?

try {
    ...
} catch(RuntimeException e) {
    ...
} catch(IOException e) {
    ...
}

¿Esta orden es correcta? ¿O es correcta pero una mala opción?