J'ai recherché en ligne et recherché dans certains livres, mais les exemples donnés sont limités et j'ai encore quelques doutes dans l'exception définie par l'utilisateur.Mise en œuvre pour l'exception définie par l'utilisateur
En utilisant les codes suivants à titre d'exemple:
//Conventional way of writing user-defined exception
class IdException extends Exception
{
public IdException(String s)
{
super(s);
}
}
class Product
{
String id = new String();
public Product(String _id) throws IdException
{
id = _id;
//Check format of id
if (id.length() < 5)
throw(new IdException(_id));
}
}
Il semble que la manière classique d'écrire une exception définie par l'utilisateur est presque toujours le même. Dans le constructeur de l'exception définie par l'utilisateur, nous appelons toujours super(msg)
. Cela déclenche une question en moi: Si la plupart des exceptions sont mises en œuvre de cette façon, quelle différence y a-t-il entre toutes ces exceptions? Par exemple, je peux avoir plusieurs exceptions définies par l'utilisateur, mais toutes semblent faire la même chose sans aucune différence. Par exemple, je peux avoir plusieurs exceptions définies par l'utilisateur. (Il n'y a pas mise en œuvre dans ces exceptions, ce qui les rend le travail?)
Exemple:
class IdException extends Exception
{
public IdException(String s)
{
super(s);
}
}
class NameException extends Exception
{
public NameException(String s)
{
super(s);
}
}
class ItemException extends Exception
{
public ItemException(String s)
{
super(s);
}
}
Journaliste: ne devrait donc pas nous (par exemple) mettre en œuvre le contrôle de id
à l'intérieur du classe d'exception? Si toutes les classes d'exception ne semblent pas faire la même chose (ou ne font rien).
Exemple de mise en œuvre du contrôle dans une exception:
class IdException extends Exception {
public IdException(String s)
{
super(s);
//Can we either place the if-statements here to check format of id ?
}
//Or here ?
}
C'est le point que je ne comprends pas. Si nous n'implémentons pas la logique dans les exceptions.Dans mon exemple, 'IdException',' NameException', & 'ItemException' tout semble faire la même chose. Alors, pourquoi mettons-nous encore en œuvre autant d'exceptions qui font la même chose? Merci. – user3437460
@ user3437460 Le type des exceptions peut être réutilisé dans le code pour produire différentes branches pour différents types d'exceptions dans les blocs 'try {...} catch (...) {...}' (voir @ sp00ms answer) et vous pouvez créer un message formaté à partir des paramètres clés pour rendre le code 'throw' plus lisible et produire toujours un texte de message agréable et lisible (voir ma réponse). – AlexR
Les exceptions personnalisées sont des raisons de causes personnalisées. Dans chaque exception personnalisée, vous pouvez personnaliser vos informations de manière très spécifique. –