Почему выгода исключение как ссылка на константу?

Я услышал и много раз читал, это лучше для ловли исключения как ссылки на константу, а не как ссылка. Почему

try {
    // stuff
} catch (const std::exception& e) {
    // stuff
}

лучше, чем

try {
    // stuff
} catch (std::exception& e) {
    // stuff
}
74
задан cairol 27 January 2010 в 07:21
поделиться

4 ответа

Вам нужна:

  • ссылка, чтобы полиморфно
  • a const получить доступ к исключению, чтобы увеличить производительность, и сказать компилятору, что вы не собираетесь модифицировать объект

Вторая не так важна как a, но единственная реальная причина бросить const - это сигнал о том, что вы хотите сделать изменения в исключении (обычно полезно только если вы хотите перебрасывать его с добавленным контекстом на более высокий уровень).

56
ответ дан 24 November 2019 в 12:03
поделиться

по той же причине, что вы используете Const.

-1
ответ дан 24 November 2019 в 12:03
поделиться

Он говорит компилятору, что вы не будете вызывать любую функцию, которая модифицирует исключение, которое может помочь оптимизировать код. Вероятно, не делает большую разницу, но стоимость этого тоже очень маленькая.

5
ответ дан 24 November 2019 в 12:03
поделиться

Вы собираетесь изменить исключение? Если нет, это может быть консте. Та же причина, по которой вы должны использовать Const где-либо еще (я говорю, должен, потому что он на самом деле не делает так много раз отличии на поверхности, может помочь компиляторам, а также помогать кодерам использовать ваш код правильно, а не делать не следует)

Обработчики исключений, могут быть конкретными платформой и могут поставить исключения в смешных местах, потому что они не ожидают их измениться?

1
ответ дан 24 November 2019 в 12:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: