Hola javimartinez!!!
Otra solución sería hacer:
public Object remove2(int index) throws IndexOutOfBoundsException, MiException {
if (mi condicion)
throw new MiException("Error");
else
return super.remove(index);
}
De esta forma el compilador no se te quejara de que añades nuevas excepciones al método padre, pero internamente lo seguirias usando. Ademas, volveras a heredar de Collection.
El problema esta claro, tienes que tener el cuidado de hacer la llamada al método correcto. Si lo tuviese que hacer yo optaría por llamar a los métodos xxxxxxCondicionado de forma que me quedaría claro cuales son mis métodos (Pero esto es cuestión de gustos)
Espero te sirva,
un saludo,
kripton