Bom pessoal, meu problema é o seguinte:
Estou usando a classe Scanner para fazer o parser de um arquivo, porém um erro muito estranho está ocorrendo no momento que chamo o método Scanner.next().
Aqui está o trecho de código que está com erro para vocês entenderem melhor
p3OutFileReader = new Scanner(primer3OutputFile).useDelimiter("=\n");
String primersInfo;
try{
primersInfo = p3OutFileReader.next(); //Aqui ocorre a exceção quando rodo sem o debug.
if(!Pattern.compile(
"PRIMER_SEQUENCE_ID=" + ssr.getSequence().getSequenceId() + "_" + ssr.getSsrNro()).matcher(primersInfo).find())
{
throw new NoSuchElementException();
}
}
catch(NoSuchElementException nseEx) {
/*
* Um novo Scanner para o mesmo arquivo é instanciado, para procurar desde o começo, caso o padrão não seja reconhecido pela última leitura ou
* caso não haja mais entradas para serem lidas.
*/
p3OutFileReader.close();
p3OutFileReader = new Scanner(this.primer3OutputFile).useDelimiter("=\n");
if(p3OutFileReader.findWithinHorizon(
"PRIMER_SEQUENCE_ID=" + ssr.getSequence().getSequenceId() + "_" + ssr.getSsrNro(), 0) != null)
{
primersInfo = p3OutFileReader.next();
}
}
Bem, chamando o método, algumas vezes ele entra no catch, outras vezes ele funciona sem lançar a excessão. O estranho é que sempre estou usando o mesmo arquivo, com os mesmos dados.
Outra coisa que não consigo entender: usando o Debugger do Eclipse e pedindo para ele parar sempre antes de chamar next(), ele lê corretamente e atribui à String primersInfo, executando o método sem lançar a excessão nenhuma vez, porém quando rodo sem usar o debugger, ele lança a excessão.
Alguém tem alguma idéia do que pode ser isso?? Faz horas que estou com esse problema e já tentei de tudo, mas não consigo resolver, não sei mais o que tentar.
Bom, é isso, se alguém puder ajudar, por favor…
Muito obrigado desde já…
Valew pessoal.