Lancer une exception non définie dans l'interface

Quelles sont les bonnes pratiques à suivre lorsque vous avez besoin de lancer une exception qui n'est pas définie à une interface qui vous mettent en œuvre?

Voici un exemple:

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 {}
}

Dans ce cas, vous avez une exception se produit lors de la lecture de petits gâteaux, si vous souhaitez lancer une exception en la matière. Cependant, Lecteur ne définit pas ce type d'exception dans son interface, alors que faites-vous? En outre, il n'est pas judicieux d'ajouter CupcakeException à la jette clause dans le Lecteur interface, car ce type d'exception est spécifique à CupcakeReader. Une façon de contourner cela est d'avoir Lecteur définir lire tel qu'il jette un peu de type parent, comme Exceptionmais alors vous perdez le contexte de l'exception. Que devez-vous faire dans cette situation? Merci!


Une autre situation intéressante qui a été mis en place consiste en une interface sur laquelle vous n'avez aucun contrôle. Dans ce cas, quel est le meilleur moyen d'indiquer qu'un problème est survenu?

À des fins d'illustration, voici un autre exemple:

public interface Reader
{
    public abstract void read();
}

public class CupcakeReader implements Reader
{
    public void read() throws CupcakeException {}
}

Dans ce cas, vous ne pouvez pas modifier Lecteurmais vous voulez indiquer qu'un problème a eu lieu en CupcakeReader's lire méthode.

source d'informationauteur Scott