throw se utiliza para "lanzar" una excepción
Throws se utiliza para indicar que un método lanza una excepción, obligando a quien use ese método a protegerse de ese error
Ejemplo de throw:
int valor = 2;
//Este programa de ejemplo solo admite valores mayores que 3, sino, lanza una excepcion de tipo IllegalArgumentException()
if(valor <= 3){
throw new IllegalArgumentException("El valor introducido ha de ser mayor que 3");
}
Este programa, si el valor es menor que 3, (en este caso lo es porque lo forzamos) lanzara una excepción, para ello, utilizamos el throw
Ejemplo de throws:
public String leerFichero(String nombreFichero) throws IOException{
String salida = "";
//Aqui hacemos lo necesario para leer el dichero
return salida;
}
public void metodoQueUsaElOtro(){
String nombreFichero = "cosa.txt";
try {
String contenidoFichero = leerFichero(nombreFichero);
} catch (IOException ex) {
//Aqui analizamos el error i lo indicamos
}
}
Tenemos un método que es capaz de leer un fichero(no entraremos en detalle de como), pero sabemos que por algún motivo, esto puede fallar y lanzar una excepción, esto lo indicamos mediante el método throws, que avisa a todos aquellos que van a usar este método de que puede lanzar esta excepción, obligando a poner su llamada entre un try/catch.
Espero haber aclarado tu duda, de lo contrario ya me diras