Throwable t = null;
try {
for (;;) {
try {
for (int i = 0; i < characterHandlers.length; i++) {
CharacterHandler ch = characterHandlers[i];
ch.start();
}
runStates();
if (confidence == Confidence.TENTATIVE
&& !tokenizer.isAlreadyComplainedAboutNonAscii()) {
warnWithoutLocation("The character encoding of the document was not declared.");
}
break;
} catch (ReparseException e) {
if (rewindableInputStream == null) {
tokenizer.fatal("Changing encoding at this point would need non-streamable behavior.");
} else {
rewindableInputStream.rewind();
becomeConfident();
this.reader = new HtmlInputStreamReader(
rewindableInputStream, tokenizer.getErrorHandler(), tokenizer,
this, this.characterEncoding);
}
continue;
}
}
} catch (Throwable tr) {
t = tr;
} finally {
try {
tokenizer.end();
characterEncoding = null;
for (int i = 0; i < characterHandlers.length; i++) {
CharacterHandler ch = characterHandlers[i];
ch.end();
}
reader.close();
reader = null;
rewindableInputStream = null;
} catch (Throwable tr) {