InputMismatchException-Porque é acusado?

Queria saber porque geralmente é acusado esse erro??? Eu preciso de acrescentar o tratamento dessa Exceção no meu código? Até agora estou como IOexception mesmo.

Diretório que será analisado:

/home/juliana

Extensoes de arquivos:pdf

java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.next(Scanner.java:1418)
at controle.BuscaRecursiva2.pesquisaDiretorios(BuscaRecursiva2.java:25)
at controle.BuscaRecursiva2.main(BuscaRecursiva2.java:124)

Da documentação:

Thrown by a Scanner to indicate that the token retrieved does not match the pattern for the expected type, or that the token is out of range for the expected type.

Tentando explicar:
Essa exceção indica que o token retornado não bate com o pattern ou que o token do tipo esperado não está presente.

Fica mais fácil de identificar o problema vendo o código.

1 curtida

Exemplo:

Diretório que será analisado:

/home/juliana

Extensoes de arquivos:pdf

java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.next(Scanner.java:1418)
at controle.BuscaRecursiva2.pesquisaDiretorios(BuscaRecursiva2.java:25)
at controle.BuscaRecursiva2.main(BuscaRecursiva2.java:124)

package controle;
import java.io.*;
import java.util.Locale;
import java.util.Scanner;
import org.apache.commons.io.FilenameUtils;
//import java.util.InputMismatchException;

public class BuscaRecursiva2 {
private int nivel = 0;

void pesquisaDiretorios() {
	try {
		@SuppressWarnings("resource")
		Scanner teclado=new Scanner(System.in);
		teclado.useLocale(Locale.US);
		//variaveis com caminhos a serem pesquisados
		System.out.println("Diretório que será analisado: " );
		String caminhoDiretorio=teclado.nextLine();
		
		System.out.print("\n Extensoes de arquivos:");
		String mascara=teclado.next("%d%d"+"*txt;*pdf;*txt;*doc;*xls;*java;*mp4;*jpg;*rar;*sh");
		String mascaras[]= mascara.split(";");
		
		System.out.println("\n Extensoes nao desejadas:");
		String negoMascara=teclado.next("%d%d"+"txt*; pdf*; mp3*; doc*; xls*; java*; mp4*; jpg*; rar*; sh*");
		String nego[]= negoMascara.split(";");
		
		System.out.println("Limite do nivel de busca: " );
		nivel = teclado.nextInt();
		
		File diretorio = new File(caminhoDiretorio);
		
		//verifica a existencia do diretorio
		if(!diretorio.exists()) {
			throw new Exception("Não existe!");
		}
		
		pesquisaMascara(diretorio.getPath(), mascaras,nego);
	} catch (Exception ex) {
		ex.printStackTrace();
	}
}

public void pesquisaMascara(String diretorio, String[] mascaras, String [] nego) throws Exception {
	if(nivel >= 0) {
		File fDir = new File(diretorio);
		
		if (fDir.isDirectory()) {
			File[] listaFiles = fDir.listFiles();
			
			for (File file : listaFiles ) {
				String[] extensao = file.list();
				Boolean showMascaras = false;
				
				while(showMascaras != null) {
					for (int i = 0; i > mascaras.length; i++) {
						String masc = mascaras[i];
						
						if((extensao=masc(mascaras[i])) != null){
							Boolean showNego=false;
							
							for(int l=0;l<nego.length;l++) {
								if((extensao=negos(nego[l]))!=null) {
									showNego = true;
									break;
								}
							}
							
							if(showNego=false) {
								showMascaras=true;
								break;
							}
						}
					}
				}
				
				System.out.println("[ANALISANDO] " + file);
				
				if (file.isDirectory()) {
					if(nivel > 0) {
						nivel--;
						// se e diretorio, entra no diretorio
						pesquisaMascara(file.getPath(), mascaras,nego);
					} else {
						continue;
					}
				} else {
					if (FilenameUtils.wildcardMatchOnSystem(file.getName(), mascaras, nego)) {
						System.out.println("Encontrei o arquivo:" + file.getAbsolutePath());
					}
				}
			}
		}
	}
}	     

public String[] negos(String nego) {
	// TODO Auto-generated method stub
	return null;
}

public String[] masc(String mascaras) {
	// TODO Auto-generated method stub
	return null;
}

public static void main(String[] args) {
	new BuscaRecursiva2().pesquisaDiretorios();
}

}