gpt4 book ai didi

c++ - 通过名称 cpp 捕获特定异常

转载 作者:行者123 更新时间:2023-11-30 03:22:29 24 4
gpt4 key购买 nike

我使用 pcl 1.7 tracking code在某些情况下,这种方法:

tracker_->compute ();

给我这些错误:

[pcl::ApproxNearestPairPointCloudCoherence::initCompute] PointCloudCoherence::Init failed. [pcl::ApproxNearestPairPointCloudCoherence::compute] Init failed.

我现在知道抛出了错误,我想准确地捕捉到这个错误,以告诉程序如果发生这个错误应该怎么做。我试过这样:

  try
{
tracker_->compute ();
}
catch (...)
{
std::cout<<"inside the exception"<<std::endl;
}

捕获所有错误但它没有用.....还有

catch(pcl::ApproxNearestPairPointCloudCoherenceException &e) 

我的程序甚至没有编译....

那么有什么想法我做错了吗?

最佳答案

我浏览了the source为了寻找引发错误的位置,和found out在您的特定情况下,它是由

提出的
if (!PointCloudCoherence<PointInT>::initCompute ())
{
PCL_ERROR ("[pcl::%s::initCompute] PointCloudCoherence::Init failed.\n", getClassName().c_str());
return (false);
}

所以你看,这里没有throw xxx,只有一个,它对我们隐藏了实际的错误处理。


为了找出到底发生了什么,我随后搜索了 PCL_ERROR 的定义,搜索结果表明它在文件 print.h 中定义。作为

#define PCL_ERROR(...)   pcl::console::print (pcl::console::L_ERROR, __VA_ARGS__)

pcl::console::print 是一个简单地打印 错误的函数,而不是抛出异常。


因此,您无法捕获错误,因为它不是异常,而只是写入控制台的纯文本。

关于c++ - 通过名称 cpp 捕获特定异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51096750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com