Я услышал и много раз читал, это лучше для ловли исключения как ссылки на константу, а не как ссылка. Почему
try {
// stuff
} catch (const std::exception& e) {
// stuff
}
лучше, чем
try {
// stuff
} catch (std::exception& e) {
// stuff
}
Вам нужна:
Вторая не так важна как a, но единственная реальная причина бросить const - это сигнал о том, что вы хотите сделать изменения в исключении (обычно полезно только если вы хотите перебрасывать его с добавленным контекстом на более высокий уровень).
Он говорит компилятору, что вы не будете вызывать любую функцию, которая модифицирует исключение, которое может помочь оптимизировать код. Вероятно, не делает большую разницу, но стоимость этого тоже очень маленькая.
Вы собираетесь изменить исключение? Если нет, это может быть консте. Та же причина, по которой вы должны использовать Const где-либо еще (я говорю, должен, потому что он на самом деле не делает так много раз отличии на поверхности, может помочь компиляторам, а также помогать кодерам использовать ваш код правильно, а не делать не следует)
Обработчики исключений, могут быть конкретными платформой и могут поставить исключения в смешных местах, потому что они не ожидают их измениться?