Было бы полезно добавить общий способ добавления информации в Throwable без создания нового Throwable?Общий способ добавления информации в Throwable без создания нового Throwable
Я часто вижу такой код:
try {
foo();
} catch(Exception e) {
throw new Exception(e.getMessage() + " extra info=" + blah, e);
}
было бы лучше вместо добавления Throwable.setProperty (ключ String, значение строки), так что приведенный выше код становится следующим?
try {
foo();
} catch(Exception e) {
e.setProperty("extra info", blah);
throw e;
}
Дополнительная информация может печатать (по одной строке) между сообщением и списком стеков.
Преимущества: 1. Не требуется создавать новые Throwables, чтобы добавить дополнительную информацию. 2. Трассировки стека не будут иметь многослойных следов причин (и, следовательно, их легче читать) 3. Снизить затраты на создание дополнительных стеков.
Если вы беспокоитесь о стоимости Throwable.fillInStackTrace(), то я осмелюсь сказать, что вы делаете это неправильно :) (предполагая, что ваше определение «стоимость» связано с циклами процессора.) – 2008-11-19 20:04:57
Я не беспокоюсь о новых Throwables, занимающих значительное количество CPU, - но даже удаление небольшого количества потраченного впустую CPU выгодно. – 2008-11-19 20:58:58