Зачем ловить исключение, чтобы просто бросить его снова?

Я хотел бы добавить для полноты, что вы также можете добавить только БИБЛИОТЕЧНУЮ ПУТЬ, где он будет искать зависимую библиотеку (которая не может быть напрямую указана в вашем коде, но вам может понадобиться библиотека, которую вы используете).

Для сравнения это соответствовало бы тому, что делает среда LIBPATH, но ее вид неясен в Qt Creator и недостаточно хорошо документирован.

Как я это сделал:

LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"

По сути, если вы не указали фактическое имя библиотеки, оно добавляет путь к тому, где он будет искать библиотеки, зависящие от поиска. Разница в синтаксисе небольшая, но это очень полезно для предоставления только PATH, где искать зависимые библиотеки. Это когда-то просто боль, чтобы предоставить каждому пути отдельную библиотеку, где вы знаете, что все они в определенной папке, и Qt Creator подберет их.

13
задан Pascal 13 January 2015 в 16:27
поделиться

5 ответов

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

14
ответ дан S.Lott 13 January 2015 в 16:27
поделиться

не делают этого.

, Если абсолютно необходимо повторно бросить исключение, просто используйте throw;, использование throw ex; стирает отслеживание стека и является абсолютно неправильным.

44
ответ дан GEOCHET 13 January 2015 в 16:27
поделиться

Одна из архитектуры (шаблоны разработки) я видел, что это использоваться в - то, где транзакция обрабатывается. Функция делает свою работу, сбои, и блок выгоды завершает транзакцию к известному состоянию (обычно список назад) и затем выдает пользовательское исключение.

Как есть теперь, осуществите рефакторинг тот код к более нормальному состоянию.

4
ответ дан Peter Mortensen 13 January 2015 в 16:27
поделиться

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

5
ответ дан tvanfosson 13 January 2015 в 16:27
поделиться
  • 1
    Большое спасибо можете Вы также помогать мне, как я могу создать dll файл из командной строки.... – Vineel Kumar Reddy 28 April 2010 в 06:53

Можно хотеть сделать это, если Вы хотите поймать исключение кроме подкласса его.

, Например,

try {
    // Something stupid
}
catch(RuntimeException e) {
    throw e; //Handle it outside
}
catch (Exception e) {
    // I'm dead
}
-8
ответ дан Peter Mortensen 13 January 2015 в 16:27
поделиться
Другие вопросы по тегам:

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