草庐IT

try-except-else

全部标签

c++ - Try-catch 在共享库中不起作用?

(这类似于myotherquestion但这是另一回事,即使它是相关的)我的项目中遇到了一个大问题。我有一个处理XML并可以抛出异常的库。并且,使用它来创建配置文件类显示了我的第一个错误:库中根本没有处理异常,每个异常都没有处理。在我写的库中:try{throwstd::exception();}catch(...){printf("caught\n");}但是,异常没有被处理并立即调用std::terminate:terminatecalledafterthrowinganinstanceof'std::exception'what():std::exception编译标志是最简单的

c++ - 在现代 C++ 中使用 try..catch block 通过模板元编程包装任意函数调用

我想创建一些模板,基本上应该包装它的参数。参数应该是一个任意的函数调用,它通过一些带有前缀和后缀代码的模板元编程魔法被包装。我想像下面这样使用它:autoresult=try_call(some_vector.at(13));和try_call将以某种方式定义,它将try..catchblock包装在some_vector.at(13)周围。像这样:template//sometemplatemetaprogrammingmagicheretry{autovalue=//executetheparameterhere,i.e.some_vector.at(13);returnstd::

c++ - 我可以修改 std::exception_ptr 中异常的值吗?

如果我在std::exception_ptr中存储了一个异常。我使用std::rethrow_exception重新抛出异常,使用catch(MyException&)访问它,然后修改值。如果我再次抛出相同的异常,我是否应该观察我所做的修改?下面的代码展示了我的想法:#include#includestructMyException{intvalue;};intmain(){std::exception_ptra=std::make_exception_ptr(MyException());try{std::rethrow_exception(a);}catch(MyException

c++ - 循环 : future iterations overwrite results of previous iterations 中的 If-else 条件

我尝试在items列表中突出显示selectedItem及其children。constQListitems=/*...*/;Item*selectedItem=/*...*/;Q_FOREACH(Item*item,items){if(selectedItem==item){item->setHighlightEnabled(true);//Highlightselecteditem}else{item->setHighlightEnabled(false);//De-highlightotheritems}}item->setHighlightEnabled方法递归地对子项执行相同

c++ - LoadLibrary 失败 : First chance exception 0xC0000139 (DLL Not Found) - How to debug?

我有一个dll“mytest.dll”,当通过LoadLibrary()加载时,返回NULL(并且127作为GetLastError())。如果我在“mytest.dll”上使用DependencyWalker,它会报告它应该正确加载并且正确找到所有DLL。在主机exe上运行DependencyWalker的探查器选项会在日志中显示以下相关部分:00:00:55.099:Loaded"mytest.DLL"ataddress0x07860000bythread0xBBC.Successfullyhookedmodule.00:00:55.115:Firstchanceexception

c++ - 影响和异常(exception)

假设我有以下功能:SomeTypecreateSomeType();根据某些原因可以抛出。然后:SomeTypeval=SomeType();//initialvaluetry{val=createSomeType();//here}catch(std::exception&){}如果createSomeType()抛出异常,我是否可以始终假设val值未更改? 最佳答案 是的,如果createSomeType()抛出异常,赋值将不会发生。控制流将从throw语句开始,通过createSomeType()在堆栈上拥有的任何对象的析构函

WebMvcSecurityConfiguration$CompositeFilterChainProxy]: Constructor threw exception

在参考spring-authorization-server的入门时根据DefiningRequiredComponents配置完SecurityConfig.java,启动时没有问题,但把注解@EnableWebSecurity设置为@EnableWebSecurity(debug=true)时:@Configuration@EnableWebSecurity(debug=true)publicclassSecurityConfig{......}应用启动报错:org.springframework.beans.factory.BeanCreationException:Errorcreat

c++ - 如何在 if-else 阶梯中针对特定条件进行互斥锁定和解锁?

在线程中运行的类的成员函数中,我想保护对if-else阶梯中某些共享资源的访问,如下所示。if(condition){}//themutexlockshouldbehereelseif(specificcondition)//themutexunlockshouldbehere{}else...我希望以上述方式进行锁定,因为除了访问共享资源以评估特定条件之外,我不会在任何地方访问/使用它,并且每个if/elseblock运行的所有操作都非常好长时间运行,我不想阻止其他线程访问该共享资源。我知道作用域锁和互斥锁,但我想不出在这种情况下可以使用它的方法。问题是:使用互斥锁定/解锁语句,甚至

c++ - 自旋锁与 std::mutex::try_lock

使用专门设计的自旋锁(例如http://anki3d.org/spinlock)与这样的代码相比有什么好处:std::mutexm;while(!m.try_lock()){}#doworkm.unlock(); 最佳答案 在典型的硬件上,有很多好处:您天真的“假自旋锁”可能会在CPU旋转时使内部CPU总线饱和,从而使其他物理内核(包括持有锁的物理内核)处于饥饿状态。如果CPU支持超线程或类似的东西,您天真的“假自旋锁”可能会消耗物理内核上的过多执行资源,使共享该物理内核的另一个线程处于饥饿状态。您天真的“假自旋锁”可能会执行无关的

C++新手问题--使用try、throw、catch的基本错误处理

我正在尝试了解C++中的错误处理。我读到过,使用try、throw、catch比使用带有返回值的if语句更好,也更简单。但我不确定我是否真的理解try,throw,catch是如何工作的。我在下面做了一个简单的例子,如果能得到关于任何问题或不良风格的反馈,那就太好了。我的目标是根据示例创建一个函数来检查另一个计算的结果。以下是我对try、throw、catch的疑问:(1)catch语句应该包含在我的函数中吗?或者它应该在其他地方,比如在main()中或在完成初始计算的函数中?(2)对这么简单的事情使用try、catch、throw是不是太过分了(我想改进我的风格)?(3)如果有错误,