Случайные исключения BadLocationException с RSyntaxTextArea и автозаполнением
Я использую RSyntaxTextArea
а также его autocomplete
сестринская библиотека и я хочу подавить или исправить случайное BadLocationException
исключения я получаю.
Я обновляю свое автозаполнение внутри DocumentListener
из RSyntaxTextArea
следующим образом:
Document document = textArea.getDocument();
document.addDocumentListener(new DocumentListener()
{
@Override
public void insertUpdate(DocumentEvent documentEvent)
{
}
@Override
public void removeUpdate(DocumentEvent documentEvent)
{
}
@Override
public void changedUpdate(DocumentEvent documentEvent)
{
updateAutoCompletion(textArea, textProvider, producer);
}
});
Однако иногда я получаю следующее исключение:
javax.swing.text.BadLocationException: Invalid location
at javax.swing.text.GapContent.getChars(GapContent.java:189)
at javax.swing.text.AbstractDocument.getText(AbstractDocument.java:810)
at org.fife.ui.autocomplete.DefaultCompletionProvider.getAlreadyEnteredText(DefaultCompletionProvider.java:102)
at org.fife.ui.autocomplete.AbstractCompletionProvider.getCompletionsImpl(AbstractCompletionProvider.java:168)
at org.fife.ui.autocomplete.CompletionProviderBase.getCompletions(CompletionProviderBase.java:104)
...
Я попытался обернуть вызов метода в try-and-catch
блок, но Java говорит мне, что исключение никогда не выдается, но это на самом деле. Проверка экземпляра исключения также вызывает предупреждение о том, что if-block
избыточно:
try
{
updateAutoCompletion(textArea, textProvider, producer);
} catch (Exception exception)
{
// Warning: Condition "exception instanceof BadLocationException" is always false
if (!(exception instanceof BadLocationException))
{
exception.printStackTrace();
}
}
Я не нашел способа подавить исключение, и я не уверен, почему оно иногда выбрасывается. Это должно быть проблема синхронизации при переключении содержимого текстовой области, но почему исключение не может быть поймано "обычным способом"?