Serait-il utile d'ajouter un moyen générique d'ajouter des informations à un Throwable sans créer un nouveau Throwable?Générique d'ajouter des informations à un Throwable sans créer un nouveau Throwable
Je vois souvent du code comme ceci:
try {
foo();
} catch(Exception e) {
throw new Exception(e.getMessage() + " extra info=" + blah, e);
}
Serait-il préférable d'ajouter à la place Throwable.setProperty (String key, String value) de sorte que le code ci-dessus est reformulé comme suit?
try {
foo();
} catch(Exception e) {
e.setProperty("extra info", blah);
throw e;
}
Les informations supplémentaires peuvent s'imprimer (une par ligne) entre le message et la liste de piles. Avantages: 1. Ne nécessiterait pas la création de nouveaux Throwables juste pour ajouter des informations supplémentaires. 2. Les traces de pile n'ont pas plusieurs couches de traces de cause (et donc sont plus faciles à lire) 3. Réduire le coût de création de traces de pile supplémentaires.
Si vous vous inquiétez du coût de Throwable.fillInStackTrace(), alors j'ose dire que vous le faites mal :) (en supposant que votre définition de «coût» soit liée aux cycles du processeur.) –
Je ne suis pas inquiet à propos de nouveaux Throwables prenant une quantité significative du CPU - mais même en supprimant une petite quantité de CPU gaspillée est bénéfique. –