En premier lieu, le mécanisme appelé "exception" a été créé pour activer la description ** "Que dois-je faire lorsque le processus est ignoré pour cette raison?" ** (je ne pense pas que je suis en colère). .. L '"exception" qui est envoyée est exactement cette "raison pour ceci et cela", et même si on dit que "le traitement a été époustouflé pour une raison générale", il ne peut être renvoyé que comme "insensé". C'est **.
pas bon. Bien sûr, je ne dis pas que c'est totalement inutile, mais ** j'ai quelque chose à faire avant cela **.
** Décidez "qui, jusqu'où, quoi faire". ** ** Par exemple, supposons qu'il y ait une opération consistant à "lire un certain fichier, l'analyser et le conserver comme objet". A ce moment (bien que ce soit un peu détaillé), quatre caractères apparaissent comme des caractères: "celui qui passe l'emplacement d'un certain fichier", "celui qui lit un certain fichier", "celui qui analyse ce qui est lu" et "celui qui le détient".
Que devraient faire ces gars et combien? Dans le bon sens, il faut supposer que "celui qui passe l'emplacement d'un fichier" passera au moins "quel serait l'emplacement du fichier", "(probablement) sous forme de chaîne", et "sans perte". Il y aura. Sur la base de cette hypothèse, "celui qui lit un certain fichier" n'a pas à penser à "quelque chose comme l'emplacement de ce fichier indique vraiment l'emplacement du fichier?" Même si vous allez lire et que vous n'avez pas le fichier, vous pouvez toujours vous plaindre (= exception), "Hé, je suis allé chercher les informations que vous m'avez données, n'est-ce pas?"
Pour le dire froidement, ça s'appelle CoC, ** Design by contract **. Quoi, "N'y a-t-il pas une exception!"? Qu'est-ce que tu racontes ** Je dis que l'exception est à utiliser lorsque le contrat n'est pas conservé **.
** Si l'argument est incorrect, soyez silencieux et lancez une IllegalArgumentException **. c'est tout.
...... C'est trop compliqué, alors je vais creuser un peu plus. Par exemple, supposons que vous prépariez l'API suivante. Il prend deux arguments et renvoie le résultat de a / b. (C'est juste un exemple, alors pardonnez-moi d'être trop remplaçant)
ex1.java
public int div(int a, int b){
return a/b;
}
Cependant, il a été critiqué que ce n'était pas bon. Parce que div (1,0)
provoquera ArithmeticException (il vaut peut-être mieux dire DivideByZeroException aux gens de .net, je suis aussi un groupe DBZE ...).
Que feriez-vous alors? Eh bien, nous aurons la validation.
La réponse est, bien entendu, "** dans certains cas **". Cela devrait être créé si l'utilisation prévue est de "rattraper les exceptions individuelles ensemble dans une certaine mesure", comme dans l'exemple précédent. Il est toujours inesthétique d'attraper de nombreuses exceptions. Inversement, si vous n'avez aucune raison de faire quelque chose **, vous devez utiliser l'existant **. Ce n'est pas difficile. Bref, la réinvention des roues est ridicule, c'est donc juste une question d'arrêt.
** Gardez le contrat et profitez du codage! !! ** **
Aussi, ** je vous le demande, alors ne vous imitez pas simplement pour détruire le système de moule **. (Bien que je pense que cela devrait être dit à un idiot qui gère les valeurs de code avec des nombres bruts ...)
Recommended Posts