草庐IT

objc_exception_throw

全部标签

c++ - 在包含 std::string 的函数上使用 throw() 后缀是否安全?

我有一个不抛出任何异常的成员函数,所以我在它的末尾附加了throw()后缀,表明它不会抛出任何异常。我的问题是,在函数中我使用了几个std::string,假设在std::string的初始化过程中出现了错误,并抛出bad_alloc或out_of_range(或者std::string可能出错的任何其他问题)。仍然添加throw()后缀是否仍然安全? 最佳答案 赫伯萨特says那个exceptionspecificationsconferalotlessbenefitthanthey'reworth它带来的问题多于带来的好处。所以

c++ - "except that a default constructed array is not empty"是什么意思?

在N3337中,我正在阅读§23.3.2.1/3,它指出:Anarraysatisfiesalloftherequirementsofacontainerandofareversiblecontainer(23.2),exceptthatadefaultconstructedarrayobjectisnotemptyandthatswapdoesnothaveconstantcomplexity.在§23.2.1,表96容器要求中,它显示了一个默认构造的对象Xu;,其中后置条件是u.empty()。据推测,以下内容:std::arraya;应该导致a.empty()输出1,它确实如此。

c++ - 如果在 user.hpp 中定义了 BOOST_NO_EXCEPTIONS,为什么不能编译 boost::shared_ptr

我有一个嵌入式系统,想在这个系统中使用boost,但需要禁用异常,因为我不想支付异常成本。boost给了一个user.hpp和可设置的宏选项BOOST_NO_EXCEPTIONS和BOOST_NO_EXCEPTION_STD_NAMESPACE,但是boost::shared_ptr不能编译(更准确的说,不能链接)如果定义了这两个宏。shared_ptr_boost.cpp:(.text._ZN5boost6detail12shared_countC2IiEEPT_[_ZN5boost6detail12shared_countC5IiEEPT_]+0x7a):undefinedrefe

c++ - 与 std::current_exception 关联的数据的生命周期

考虑以下代码:std::exception_ptreptr{std::current_exception()};constchar*msg=0;try{if(eptr!=std::exception_ptr{}){std::rethrow_exception(eptr);}}catch(conststd::exception&ex){msg=ex.what();}我可以在catch之外使用msg吗?换句话说,ex是否引用与eptr相同的异常实例?谢谢! 最佳答案 rethrow_exception的描述说:Throws:theexc

c++ - 错误 - C++ 中的 "throws different exceptions"

我收到一个错误提示error:declarationof'virtualFXHost::~FXHost()'throwsdifferentexceptionserror:thanpreviousdeclaration'virtualFXHost::~FXHost()throw()'我不确定如何开始解决这个问题,我以前从未遇到过。在我的.h中我有:public:virtual~FXHost()throw();在我的.cpp中我有:FXHost::~FXHost(){gHost=NULL;}感谢指点。 最佳答案 函数声明末尾的throw

c++ - 将 std::exception 转换为 EXCEPTION_POINTERS

我可能完全误解了如何使用GoogleBreakpadAPI,如果是这种情况,我愿意接受评论/建议/粗鲁的评论。我正在尝试调用以下C++函数:boolWriteMinidumpForException(EXCEPTION_POINTERS*exinfo);我有一个对std::exception的引用:try{returnQApplication::notify(receiver,event);}catch(std::exception&ex){eh_.WriteMinidumpForException(?????);//...dosomemorestuffandultimatelykil

c++ - catch (...) 是否在 throw 上工作;没有对象?

当没有待处理的异常在堆栈的上层处理时,C++标准对以下代码应该如何处理?try{throw;}catch(...){cerr空投会不会被接住? 最佳答案 来自2003C++标准§15.1[except.throw]/8:Ifnoexceptionispresentlybeinghandled,executingathrow-expressionwithnooperandcallsterminate().因此,在您的示例中,由于当前未处理任何异常,因此不会抛出任何内容,而是调用terminate()。由于terminate()没有返回

c++ - 函数异常规范和标准异常 - foo() throw(Exception)

在C++中,您可以像这样声明具有异常规范的函数:intfoo()constthrow(Exception);我找到了这两个链接:http://www.cplusplus.com/doc/tutorial/exceptions/和http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr156.htm但有几件事最终没有答案......问题1:为什么要添加异常规范?它会带来任何性能提升吗?编译器会有什么不同?因为

c++ - 捕捉 c++ "Access Violation Writing Exception"?

在我的C++代码中,我有一个代码块,当用户输入无效时会出现“访问冲突写入位置...”异常。我试图在我的try/catchblock中捕获此异常以在异常发生时显示错误消息..但由于某种原因它没有捕获错误。try{//...somecodethatcausesAccessViolationWritingLocationException}catch(...){std::cout我这样做了,但是当异常发生时,控制台没有显示我的错误信息,而是说有一个Unhandledexceptionat0x0F0B0E9A(msvcr110d.dll)inExample.exe:Accessviolatio

c++ - 为什么 "dynamic exception"保证会导致开销?

在C++11中,这已被弃用:voidfoo()throw();并替换为voidfoo()noexcept;在thisarticle据解释,这样做的原因(除其他外,归结为同一件事)是C++exceptionspecificationsarecheckedatruntimeratherthanatcompiletime,sotheyoffernoprogrammerguaranteesthatallexceptionshavebeenhandled.虽然这对我来说确实有意义,但我不明白为什么首先要动态检查throw(),或者为什么noexcept不提供异常保证除了调用std::termin