Has de usar un bucle y ayudarte de un boolean de manera que finalice el bucle solo si la lectura no ha provocado ninguna excepción.
Podría hacerse así, por ejemplo:
public class PedirDouble {
private static Scanner teclado = new Scanner(System.in);
public static void main(String[] args) {
double dato = 0;
boolean esValido = false;
while(!esValido) {
try {
dato = pedirDoublePositivo();
//Si la línea anterior no ha lanzado excepción, es que es un dato válido
esValido = true; //Ponemos fin al bucle
}
catch(Exception ex) {
System.out.println("ERROR. Dato invalido:\n" + ex.getMessage());
}
}
System.out.println("\nValor introducido: " + dato);
System.out.println("\n\t\tFIN DE PROGRAMA");
}
private static double pedirDoublePositivo() throws Exception {
System.out.print("\nIntroduzca un valor double positivo: ");
double valor = Double.parseDouble(teclado.nextLine());
if (valor < 0)
throw new Exception("El valor " + valor + " no es positivo.");
else
return valor;
}
}