Primeiro eu tenho que apontar o fato de que CustomExceptionnão se estende, Exceptionentão não é realmente um Exception.
Dito isto:
Se você não se importa com o Princípio da inversão de dependência , deixe-o como está. Não há problema em uma interface depender de classes concretas, por exemplo, muitas interfaces dependem Stringou Objectsão classes concretas . O fato é que tenderíamos a acreditar que as classes que pertencem ao Java SDK são mais estáveis (menos propensas a alterações de quebra de código) do que as que escrevemos.
Por outro lado:
Se você deseja seguir o DIP (que tem inúmeros benefícios e é minha recomendação), é necessário fazer uma de duas coisas:
Opção 1
- Faça
CustomExceptionresumo
- Mantenha
void onError(CustomException ex)como está
opção 2
- Faça
CustomExceptionuma interface
- Mantenha
void onError(CustomException ex)como está
Com qualquer uma dessas opções, você estaria em conformidade com o DIP, pois a interface não dependeria de nenhuma classe concreta, apenas de abstrações.
Em uma aplicação direta de inversão de dependência, os resumos pertencem às camadas superior / política. Essa arquitetura agrupa os componentes superiores / de política e os resumos que definem serviços inferiores juntos no mesmo pacote. As camadas de nível inferior são criadas por herança / implementação dessas classes ou interfaces abstratas . Martin, Robert C. (2003).
- Desenvolvimento Ágil de Software, Princípios,> Padrões e Práticas. Prentice Hall. 127-131. ISBN 978-0135974445.