1) Почему исключение было проглочено и прослушивание в библиотеке остановлено? Есть ли какие-то конструктивные причины?
Вам нужно будет спросить у автора кода.
Однако, это кажется преднамеренным, поскольку waitForSerialEvent
объявлено как throws NullPointerException
.
На вашем месте я бы глубже вникнул, куда бросают NPE и почему. Модифицируйте код, чтобы напечатать трассировку стека, а не просто полностью исключить исключение. Это может быть обходной путь или может быть законная причина для этого.
Если мы сделаем предположение, что код слушателя клиента может выдать NPE, то, на мой взгляд, ошибочно для потока событий предполагать, что все NPE могут быть раздавлены.
Но, глядя на код, я также могу видеть места, где NPE преднамеренно выбрасываются, чтобы (очевидно) сигнализировать об ошибке; например в методах read
в SerialPortInputStream
. Так что мне не ясно, что NPE должны быть раздавлены вообще.
2) Сам класс SerialPort является окончательным, и поэтому о моей собственной реализации класса для замены ласточки не может быть и речи. Как мне продолжить?
Код находится на GitHub, поэтому вы можете разветвить репозиторий, разработать патч и отправить запрос на извлечение.
4) Почему просто NPE, могут возникнуть и другие исключения. Так что, по крайней мере, мне придется самостоятельно обрабатывать исключения Правильный ли этот подход моих собственных обработчиков?
Хороший вопрос.
Но на самом деле все эти вопросы лучше адресовать автору кода. Кажется, он отвечает на вопросы, опубликованные как проблемы ... если они уместны.