Estou tentando fazer um pequeno programa que dado um número o programa calcule a tabuada desse número até que seja digitado o zero. Fiz um tratamento para não aceitar letras, apenas números, mas quando digito uma letra ele mostra a msg de erro e termina o programa ou então entra num loop infinito (depende das pequenas modificações que faço). Quero que ele continue a rodar dando a chance do usuário digitar um outro valor que esteja de acordo com o estabelecido. Pesquisei um monte e ainda não encontrei a solução. Muito obrigado. 
import java.util.*;
public class Tabuada{
public static void main(String argumento[]){
int num = 0;
Scanner leitura = new Scanner(System.in);
do{
System.out.print("\n Entre com um numero: ");
try{
num = leitura.nextInt();
if (num < 0 || num > 10){
System.out.println("\n\n\n Digite um numero valido!");
}else if(num != 0){
System.out.print("\n");
for(int x = 1; x <= 10; x ++){
System.out.println(" " + num + " x " + x + " = " + num * x);
}
}
}catch(InputMismatchException e){
System.err.println(" Digite somente numeros!");
}
}while(num != 0);
}
}