Problema com Scanner

0 respostas
M

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.

Criado 30 de abril de 2008
Respostas 0
Participantes 1