Этот вопрос уже имеет ответ здесь:
Если я хочу записать полезную информацию в файл каждый раз, когда я поймал всеобъемлющее исключение, как сделать это?
try
{
//call dll from other company
}
catch(...)
{
//how to write info to file here???????
}
Вы не можете получить никакой информации из блока ... catch. Вот почему код обычно обрабатывает исключения следующим образом:
try
{
// do stuff that may throw or fail
}
catch(const std::runtime_error& re)
{
// speciffic handling for runtime_error
std::cerr << "Runtime error: " << re.what() << std::endl;
}
catch(const std::exception& ex)
{
// speciffic handling for all exceptions extending std::exception, except
// std::runtime_error which is handled explicitly
std::cerr << "Error occurred: " << ex.what() << std::endl;
}
catch(...)
{
// catch any other errors (that we have no information about)
std::cerr << "Unknown failure occurred. Possible memory corruption" << std::endl;
}
В обработчике catch-all нет возможности узнать что-либо о конкретном исключении. Лучше всего, если вы можете поймать исключение базового класса, например, std::exception, если это вообще возможно.
Вы не можете получить никаких деталей. Весь смысл catch(...)
заключается в том, чтобы иметь такой "я не знаю, что может произойти, поэтому ловите все, что брошено". Обычно вы размещаете catch(...)
после catch
'ов для известных типов исключений.
Я думаю, он хочет записать в журнал, что произошла ошибка, но не требует конкретно точной ошибки (в этом случае он напишет свой собственный текст ошибки).
Ссылка DumbCoder, размещенная выше, содержит учебник, который поможет вам получить то, чего вы пытаетесь достичь.