草庐IT

objc_exception_throw

全部标签

c++ - 复制省略和异常(exception)

在阅读了cppreference的复制省略之后我想玩异常(exception)和复制省略。所以我在coliru上用gcc7.2写了下面的代码#includeclassException{public:Exception(){std::cout输出constructedcopyconstructed我们可以看到调用了复制构造函数,即使在使用-O2调用gcc时也会发生这种情况。在我看来,根据以下条款,这段代码应该有资格复制省略:Whenhandlinganexception,iftheargumentofthecatchclauseisofthesametype(ignoringtop-l

c++ - future 、 promise 和异常(exception)

std::promisep1;autof=p1.get_future();{std::promisep2(std::move(pr));}boolvalid=f.valid();//truef.wait();//doesnotthrow,orfail,butreturnsimmediatelyf.get();//throwsanexception有什么方法可以在调用get之前检查future是否会抛出异常?我希望valid会检查...我不太确定如何让valid返回false。在不设置值的情况下销毁promise不会这样做。 最佳答案

opencv - libopencv_calib3d : undefined reference to `std::__throw_out_of_range_fmt(char const*, …)@GLIBCXX_3.4.20'

我提到了this在我的RaspberryPi2上安装OpenCV(它运行在最新的Raspbian上,内核版本为4.1.7-v7)。由于依赖项错误,我无法安装libgtk2.0-dev,但我能够毫无错误地安装OpenCV。我正尝试在Qt中为我的RaspberryPi2交叉编译一些简单的OpenCV代码。但是我在链接器阶段遇到以下错误:/usr/local/lib/libopencv_calib3d.so:undefinedreferencetostd::__throw_out_of_range_fmt(charconst*,...)@GLIBCXX_3.4.20我的代码是:myFunc{

c++ - LLVM 是避免动态转换规则的异常(exception)吗?

LLVM有自己的RTTI替代方案,它比内置RTTI的速度有所提高,并允许动态转换为没有vtable的类(dyn_cast)。但是,它仍然可以完全按照dynamic_cast的方式使用。尽管它确实允许它与更多类一起使用,但已被使用。dyn_casttemplatedocumentationLLVM是一个享有盛誉的C++项目,所以这似乎与俗语背道而驰,即过多的动态转换是糟糕设计的标志,也称为代码异味。当然,与标准dynamic_cast相比,性能更好的动态转换并不能改善其在设计中的使用。.那么谁在这里?在C++代码中是否存在大规模使用动态转换是一个好的设计选择的情况?Google在LLVM

c++ - 从库中的 std::exception 派生:Does a headers-only solution work for catching exceptions?

在我们的跨平台开源库中,我们派生自std::exception以定义可以在库代码和用户代码中捕获的自定义异常。我看到这实际上是一个推荐的过程,但在VisualStudio2015(或者更确切地说,伴随的新MSVC版本?)中,在实现类(warningC4275)中抛出警告-另请参见此处:Howtodllexportaclassderivedfromstd::runtime_error?当然我们可以忽略这个错误,但这对我来说似乎是错误的。与旧的VisualStudio版本相比,出现警告的原因似乎是std::exception曾经在旧的MSVC版本中导出,但同时不再导出。无论哪种情况,我都觉

c++ 在自定义异常的方法/构造函数签名中有和没有 throw()

我是C++的初学者,因此对这个愚蠢的问题深表歉意。我将它发布在这里是因为我在stackoverflow上找不到类似的答案。我正在处理C++中的异常,并且在我动手处理自定义异常时,我有这段代码classMyException:publicstd::exception{public:virtualconstchar*what()constthrow(){return"somethingbadhappened";}};//classthatthrowsaboveexceptionclasscanGoWrong{public:canGoWrong(){throwMyException();}}

C++ catch(std::exception & e) 与 catch(...)

我知道处理这两个捕获的不同之处,但是椭圆捕获std::exceptioncatch无法捕获的东西需要什么?例如:try{throwstd::runtime("runtimeerror!");}catch(conststd::exception&e){std::cout我看过结合使用这两种方法的代码示例,但我没有看到您同时使用这两种方法的原因。 最佳答案 catch(conststd::exception&e)只会捕获标准异常。catch(...)之后会捕获那里的所有内容。您可以处理整数和其他类型(http://www.cpluspl

如何彻底禁用笔记本电脑的键盘或者禁用笔记本的触控屏,及禁用后如何恢复,解决笔记本电脑蓝屏信息显示:“systern thread exception no handled” 失败操作“etd.sys

目录测试键盘是否失灵的软件针对场景网上教的方法——卸载掉PC/AT增强型PS/2键盘(101/102键)具体做法我推荐的做法——禁用笔记本的PC/AT增强型PS/2键盘(101/102键)禁用笔记本键盘(PC/AT增强型PS/2键盘(101/102键)方法禁用了笔记本键盘后虚拟键盘调用方式恢复笔记本键盘(PC/AT增强型PS/2键盘(101/102键)方法如果在笔记本电脑误操作禁用了HTD驱动导致电脑蓝屏开不了机怎么办(现象)笔记本电脑蓝屏,蓝屏信息显示:“systernthreadexceptionnohandled”或者失败操作“etd.sys”解决办法:在进入不到系统时修改ETD.sys

c++ - 在实现非抛出交换时我应该使用 throw() 吗?

在实现非抛出交换习语时,我应该使用throw()吗?namespaceA{structB{voidswap(B&other)throw(){/*fancystuffthatdoesn'tthrow*/}};voidswap(B&lhs,B&rhs)throw(){lhs.swap(rhs);}}namespacestd{templatevoidswap(A::B&lhs,A::B&rhs)throw(){lhs.swap(rhs);}}我特别担心将throw()规范放在std::swap的特化上。奖励问题:使用C++0x的noexcept关键字时答案是否不同?

c++ - C++ 中的内联 throw() 方法

我正在尝试定义一个非常简单的异常类。因为它太简单了,所以我只想将它保留在.h文件中,但编译器不喜欢throw()。代码:#include#includeclassPricingException:publicvirtualstd::exception{private:std::stringmsg;public:PricingException(std::stringmessage):msg(message){}constchar*what()constthrow(){returnmsg.c_str();}~PricingException()throw(){}};GCC给出以下错误:/