Я пытаюсь использовать ROS_INFO_STREAM внутри чешуйчатой Try ... Catch, но у меня есть только выход верхнего уровняROS_INFO_STREAM не печатает
Вот минимальная куча коды:
void failure()
{
try
{
// throw std::length_error
std::string("abc").substr(10);
}
catch (...)
{
ROS_ERROR_STREAM("ROS failure()"); // print OK
std::cout << "cout failure()" << std::endl; // print OK
throw; // re-throw the exception
}
}
int main()
{
try
{
ROS_ERROR_STREAM("ROS calling"); // print OK
failure(); // will throw
}
catch (...)
{
ROS_ERROR_STREAM("ROS call function"); // <-- NO print
std::cout << "cout call function" << std::endl; // print OK
}
return 0;
}
выхода :
ROS calling
ROS failure()
cout failure()
cout call function
Мое предположение было бы, что ROS_ERROR_STREAM выглядит буферным, но в качестве выходного сигнала ошибки не должно быть.
Я бегу ROS Groovy
Окрашивание выходных данных на самом деле не так сложно, как только вы попали в него (см. [Этот ответ] (http://stackoverflow.com/a/2616912/2095383)). Это другой вопрос, конечно, стоит ли это усилий. – luator