У меня есть следующий интерфейс:Документирование выброшен RuntimeExceptions для интерфейсов
public interface DataReceiver {
public Data getData();
}
Приемники бетона имеют разные источники данных и, следовательно, бросить различные исключения:
public class DeviceDataReceiver implements DataReceiver {
// Gets data from some hardware device
// Exceptions include: DeviceNotConnected, DeviceNotLicensed, RequestTimeout, etc
public Data getData() { ... }
}
public class FileDataReceiver implements DataReceiver {
// Gets data from a file on disc
// Exceptions include: FileNotFound, BadFormat
public Data getData() { ... }
}
Я документированы эти RuntimeExceptions в Предос- классов, используя тег Javadoc @throws
.
То, с чем я борюсь, заключается в том, как документировать интерфейс, поскольку это будет первое, на что смотрит пользователь моей библиотеки, когда он получает сообщение об ошибке (я использую интерфейс по всему публичному API вместо конкретных классов). Документирование всех исключений из производных классов не очень привлекательно для меня, поскольку они вообще не имеют отношения.
Любые лучшие практики для этого сценария?
Ну, должен ли клиент обрабатывать «FileNotFound» иначе, чем исключение «DeviceNotLicensed»? В конце концов, если у вас есть общий интерфейс, будущие реализации могут вызывать разные виды исключений, и клиент не может вообще знать, какой вид реализации он использует ... – user140547
'FileNotFoundException' - это исключение, исключающее« FileDataReceiver » в настоящее время обернуть и перебросить его (и любое другое исключенное исключение) в качестве «RuntimeException», правильно? –
@MickMnemonic Да, это так. –