Какова наилучшая практика, когда вам нужно создать исключение, которое не было определено в интерфейсе, который вы реализуете?
Вот пример:
public interface Reader
{
public abstract void read() throws IOException;
}
public class CarrotReader implements Reader
{
public void read() throws IOException {}
}
public class CupcakeReader implements Reader
{
public void read() throws IOException, CupcakeException {}
}
В этом случае у вас есть особое исключение, возникающее при чтении кексов, поэтому вы хотите создать исключение, связанное с этим. Однако Reader не определяет этот тип исключения в своем интерфейсе, так что вы делаете? Кроме того, нет смысла добавлять CupcakeException в предложение throws в интерфейсе Reader, потому что этот тип исключения специфичен для CupcakeReader. Одним из способов этого является чтение чтения Reader таким образом, что он генерирует некоторый родительский тип, например Exception, но затем вы теряете контекст для исключения. Что вы должны делать в этой ситуации? Спасибо!
Еще одна интересная ситуация, которая возникла, связана с интерфейсом, над которым вы не контролируете. В этом случае, что является лучшим способом указать, что проблема возникла?
Для иллюстративных целей, вот еще один пример:
public interface Reader
{
public abstract void read();
}
public class CupcakeReader implements Reader
{
public void read() throws CupcakeException {}
}
В этом случае вы не можете изменить Reader, но вы хотите указать, что проблема возникла в методе чтения CupcakeReader.