InterruptedException, API дизайн и неплотные абстракции - PullRequest
1 голос
/ 27 марта 2020

Хорошо решено, что InterruptedException вообще не следует проглатывать ; это запрос о том, что поток очищается и завершает свою работу.

Как должен дизайн API данной абстракции I обрабатывать InterruptedException, если подмножество его реализаций может выдать InterruptedException?

Более конкретно, представьте Datasource с реализациями InMemoryDatasource и NetworkDatasource. Последний включает блокирующий вызов по сети и, таким образом, может выдать InterruptedException. Это означает, что InterruptedException должен быть объявлен на интерфейсе Datasource.

Это кажется подходящим - это источник данных, вы не знаете, откуда поступают данные, поэтому может блок и клиенты должны обработать InterruptedException в результате.

Но это заставляет задуматься о другом - почему бы нам не увидеть, что more InterruptedException s объявляется в API?

Например:

Кажется, general не отбрасывает InterruptedException в API.

Как дизайнеру API, как лучше поступить с InterruptedException?

...