草庐IT

non-throwing

全部标签

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给出以下错误:/

c++ - 我可以在 typedef 函数签名中放置 throw 声明吗?

是否可以声明一个包含抛出规范的函数指针?例如,我有这个功能:voidwithout_throw()throw(){}并想创建一个接受它作为参数的函数,完成throw()部分。我试过将它添加到typedef中,但这似乎不起作用:typedefvoid(*without)()throw();GCC给我错误error:‘without’declaredwithanexceptionspecification。 最佳答案 你不能输入定义。标准中明确不允许这样做。(将其替换为noexcept也无济于事,同样的问题。)引用C++11草案n329

c++ - catch(...) 中的 throw 是按值还是按引用抛出

我老板回答了这个问题why...(threepoints)incatchblockisexist?非常优雅。但这让我想到了一些事情(并希望弥补我之前的错误问题),确实catch(...){throw;}通过值(即采用深拷贝)或通过引用重新抛出捕获的异常? 最佳答案 标准说:Athrow-expressionwithnooperandrethrowsthecurrentlyhandledexception.Theexceptionisreactivatedwiththeexistingtemporary;nonewtemporarye

c++ - 编译错误 : base operand of ‘->’ has non-pointer type ‘Token’

我在尝试编译我的C++代码时遇到标题中提到的错误。我无法理解我在这里做错了什么。编译器在我执行booloperator==(Token)函数时出现问题。我认为这是使运算符(operator)重载的方法。关于为什么编译器不喜欢我提到的任何线索this->terminal还是this->lexeme?classToken{public:tokenTypeterminal;std::stringlexeme;Token*next;Token();booloperator==(Token&t);private:intlexemelength,line,column;};boolToken::o

c++ - move 哪个 throw ?

据我了解,move构造函数和move赋值必须标记为noexcept,以便编译器在例如在vector内部重新分配时使用它们。但是,是否存在move分配、move构造可能实际抛出的真实案例?更新:例如,在构造时具有分配资源的类不能是不可抛出的。 最佳答案 However,isthereanyreal-worldcasewhereamove-assign,move-construct(orswap)mightactuallythrow?是的。考虑std::list的实现.end迭代器必须指向列表中的“最后一个元素”。存在std::list

c++ - 给定表达式 : `cond ? *this : throw()` 返回对类型的引用时出错

这似乎是一个错误,但我只是想确认一下。下面的格式是否正确?如果不是,为什么不呢?#includestructX{intvalue;constexprX(intvalue):value(value){}constexprX&do_something(intx){returnx在使用默认解决方案开关的VC++2015R3下,我得到:warningC4172:returningaddressoflocalvariableortemporaryg++(GCC)5.4.0带有开关-Wall-pedantic我得到:error:invalidinitializationofnon-constref

c++ - throw, try {} catch {} 应该如何在现实世界中使用?

我的意思是,我知道关于throw,try{}catch{}的所有语言规则,但我不确定我是否在现实世界中正确使用它们。请看下面的例子:我们有一大段科学代码可以进行各种图像处理,最近我们决定对其进行修饰并使其更加健壮。经常使用的例程之一是voidrotate_in_place(float*image,image_sizesz);为了让它更健壮,我们在代码的开头添加了一些健全性检查:voidrotate_in_place(float*image,image_sizesz){//rotate_in_placedoesnotsupportnon-squareimage;if(sz.nx!=sz.

c++ - 如果我不告诉要在 C++ 中抛出什么类型的对象,throw 语句会抛出什么?

以下代码异常终止,因为没有明确抛出对象。下面代码中的throw语句抛出什么?intmain(){try{cout 最佳答案 不带参数的throw只能在catch语句中使用,以重新抛出捕获的异常对象。您的代码尝试在catch语句之外使用它-相反,您应该选择一个类型来抛出,如果有疑问,从std::runtime_error开始并不是不合理的。有关更多选项,请参阅here.您也可以抛出自己的类型,但通常最好从标准库提供的类型之一派生它们,这样客户端代码就有更好的机会为所有逻辑上相似的错误指定适当的处理,而不必捕获和处理它们分开并针对每个新

解决:Failed to execute ‘setRequestHeader‘ on ‘XMLHttpRequest‘: String contains non ISO-8859-1 c

做项目过程中,需要前端给后端返回某个信息,但是前端返回后页面报错:类型错误:未能在“XMLHttpRequest”上执行“setRequestHeader”:字符串包含非ISO-8859-1代码点。前端返回信息是放在请求头header中的,由于header中放入了中文所以就会出现编码格式问题。如何解决? 流程:前段进行编码,后端接收到后进行解码。1.前端Vue的编码://编码encodeURIComponent(str)//解码decodeURIComponent(str) 2.后端解码//编码java.net.URLEncoder.encode(token,"UTF-8")//解码java.

ES ik分词器踩坑--startOffset must be non-negative

1.建了一个索引,字段text,分词器选的ik_max_word,写入的时候报下面一个错。。exception:"startOffsetmustbenon-negative,andendOffsetmustbe>=startOffset,andoffsetsmustnotgobackwardsstartOffset=2,endOffset=3,lastStartOffset=3forfield'description'"2.网上也有人遇到同样问题:https://github.com/medcl/elasticsearch-analysis-ik/issues/6623.把索引删了重建,用ik