草庐IT

CATCH_ALL

全部标签

c++ - "All memory allocated on the stack is known at compile time"是什么意思?

阅读thisgreattutorial关于堆栈与堆,我对这句话有疑问:在堆栈上分配的所有内存在编译时都是已知的。我的意思是,如果我处于取决于用户输入的for循环中(i从0到X),并且在for我在堆栈上分配内存(例如创建一些类的新实例并放入类容器中),它不知道编译程序时堆栈将如何增长(它错过了用户的输入)。我是不是误会了什么? 最佳答案 对读者来说,所做的陈述稍微简化了一点。你是对的,堆栈本质上是动态的,实际分配的数量可能因动态输入而异。这是一个带有递归函数的简单示例:voidf(intn){intx=n*10;if(x==0)ret

c++ - Make 始终针对目标 "all"运行,即使没有任何更新

我有这些文件测试.cpp点.h点.cpp三角形.h三角形.cpp我想要一个makefile,它允许我通过发出makePoint或分别构建每个类Point和Trianglecode>makeTriangle在需要时(头文件或源文件已更改)。makeall应该编译所有内容并在需要时构建输出程序Test。这是我到目前为止的想法:CXX=g++CXXFLAGS=-std=c++11-Wall-pedanticOBJS=Test.oPoint.oTriangle.oall:$(OBJS)$(CXX)$(CXXFLAGS)$(OBJS)-oTestPoint.o:Point.cppPoint.h$

一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill

开始一文搞懂Promise新ApiallSettled的用法和all区别,以及如何在不支持新特性的环境下实现一个PolyfillallSettled的用法construnAllSettled=async()=>{constsuccessPromise=Promise.resolve('success')//一个正常返回的PromiseconstfailPromise=Promise.reject('fail')//一个异常返回的Promise//使用allSettledconstsettiled=awaitPromise.allSettled([successPromise,failPromi

c++ - 关于 RAII,C++ `try`/`catch` block 是否与其他 block 相同?

好吧,如果我使用RAII习惯用法来管理某些上下文属性*,如果我在tryblock的开头直接使用它,它会像我预期的那样工作吗?换句话说,如果我有这个:structraii{raii(){std::cout……我成功地使用了它:{raiido_the_raii_thing;stuff_expecting_raii_context();/*…*/}...如果我这样做,RAII实例会以同样的方式工作吗:try{raiido_the_raii_thing;stuff_expecting_raii_context_that_might_throw();/*…*/}catch(std::except

c++ - 是否可以在 catch 子句中使用 co_await?

以下代码:try{throw42;}catch(inti){co_awaitsomefuture;}使用带有-fcoroutines-ts的clang6和7编译。但是,它不使用VisualC++15(2017)VisualC++16(2019)with/await编译,出现错误C2304:'co_await'cannotbeusedinsideofacatchblockC++20标准草案和cppreference似乎没有提及任何事情。它是Microsoft编译器中缺少的功能还是我误解了标准? 最佳答案 来自[expr.await],

c++ - 调试 C++ 代码 : Catch first NaN appearance

这个问题在这里已经有了答案:StoppingthedebuggerwhenaNaNfloatingpointnumberisproduced(1个回答)关闭6年前。是否有一种简单的方法可以在调试器中检查C++代码是否首次出现NaN值?

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

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

c++ - std::tr1::shared_ptr 是否会抛出 bad_alloc 并且在 try/catch block 中是个好主意?

我实际上正在制作一个简单的C++SFML游戏,我想学习更多关于C++编程的知识。现在我正在使用shared_ptr来管理资源。创建新资源时,我对shared_ptrs有一些疑问,例如:shared_ptrresource(newResource(World::LEVEL));根据boostshared_ptr(Y*p)throwsbad_alloc。我不知道std::tr1是否也这样做。而且我不知道我是否应该担心将shared_ptr放入try/catchblock中以检查是否抛出bad_alloc。这是一个好的编程习惯吗? 最佳答案

c++ - catch(...) 与 catch(CException *) 之间有什么区别?

CException是VC++抛出的所有异常的基类型,所以它应该捕获所有的异常吧? 最佳答案 CException不是所有扩展的基类型(它可能是MFC代码使用的所有异常的基类型,但仅此而已)。在C++中,你可以抛出任何东西;它不必是“异常”子类,甚至不必是对象。例如写throw42;是完全合法的或thrownewstd::vector();区别很明显:catch(CException)将只捕获抛出的CException实例及其子类,而另一个会捕获任何东西。 关于c++-catch(...

c - 在 C 中尝试 catch 语句

我今天在想其他语言中存在的try/catchblock。用谷歌搜索了一段时间,但没有结果。据我所知,C中没有try/catch这样的东西。但是,有没有办法“模拟”它们?当然,有assert和其他技巧,但没有像try/catch那样也能捕获引发的异常。谢谢 最佳答案 C本身不支持异常,但您可以使用setjmp和longjmp调用在一定程度上模拟它们。staticjmp_bufs_jumpBuffer;voidExample(){if(setjmp(s_jumpBuffer)){//Thelongjmpwasexecutedandret