草庐IT

cpp_exceptions_handling

全部标签

C++ 异常:为什么要使用或扩展 std::exception?

根据thissite抛出字符串或整数非常有用。我发现这非常干净且易于理解。throw"descriptionofwhathappened"而不是throwstd::runtime_error("descriptionofwhathappened")有什么缺点? 最佳答案 那个网站很愚蠢,教的是糟糕的设计。如果您抛出int或char*,那么您将不得不使用int或char*捕获它>只有。您可以使用const对其进行限定。如果您抛出std::runtime_error,那么您可以使用std::runtime_errorconst&或其基类

c++ - 如何将控制台输出写入cpp中的文本文件?

我正在尝试将控制台数据写入cpp中的单独文本文件。任何人都可以帮助我提供示例代码。 最佳答案 有多种方法可以做到这一点。您可以使用programname>out.txt从命令行重定向它。或者您可以在程序开始时使用freopen("out.txt","w",stdout);。 关于c++-如何将控制台输出写入cpp中的文本文件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/327

c++ - 两个不同的 .cpp 文件中的 C/C++ 作用域

我想知道为什么您不能在两个不同的.cpp文件中声明一个具有相同名称的全局变量。我的理解是考虑范围,它应该只对那个特定的.cpp文件可见,而不是其他地方,但它显然是在提示。我这样做的原因是为了代码的通用性,仅此而已。有什么想法吗?编辑清晰a.cppintg_x;b.cppintg_x; 最佳答案 要使全局变量(或函数)仅对其声明的文件可见,将其声明为static,或者(在C++中首选的方式)将变量放在无名命名空间中。看起来这会使它无法从namespace外部访问,但它实际上所做的是使它仅对它所在的文件可见。要访问在其他文件中声明的全局

c++ - 当我尝试使用异常时,为什么我的代码在 Qt Creator 中使用 -fno-exceptions 进行编译?

在我指定的项目.pro文件中:QMAKE_CXXFLAGS+=-fno-exceptions但我能够在我的应用程序中抛出异常。对此有什么想法吗?示例:这不应该起作用,但它起作用了#include#includeintmain(intc,char**v){QApplicationapp(c,v);try{throw1;}catch(inti){}returnapp.exec();} 最佳答案 您不能通过设置QMAKE_CXXFLAGS来关闭异常,因为此选项由CONFIG处理。你应该使用CONFIG-=exceptions关闭它们。QM

c++ - 如何处理失败的方法 : by using exceptions or making the methods return bool?

如何处理失败的方法:使用异常使方法返回bool值第一种方法是当出现问题时抛出异常。但是有问题的代码需要放在tryblock中,然后你需要编写catchblock。您需要检查返回值的第二种方法方法,然后做一些事情。那么基本上不是同一个机制吗?你有两个部分:检测到出现问题然后采取措施。那么我使用哪种方法重要吗? 最佳答案 异常的主要好处是它们是非本地的。您可以在抛出异常的地方捕获几个调用层之外的异常。这样,介于两者之间的代码就不必关心异常(除了确保在展开期间进行适当的清理,即异常安全),这使得异常情况不太可能被遗忘。但这种好处是有代价的

c++ - 如果我在 header 中声明 namespace ,是否可以避免在 .cpp 文件中使用类名?

这个问题在这里已经有了答案:C++:"Classnamespaces"?[duplicate](4个答案)关闭9年前。在C++中,我只想在.h文件中声明一个DisplayInfo类,然后在.cpp文件中,不必键入第一个DisplayInfo::DisplayInfo()和每个函数定义。遗憾的是,我已经查看了20多个主题和我的C++书籍两个多小时,但仍无法解决这个问题。我认为这是因为我正在尝试在C++中使用我10年的Java培训。第一次试验://DisplayInfo.hnamespaceDisplayInfoNamespace{ClassDisplayInfo{public:Displ

c++ - JNI_CreateJavaVM : Buffer overrun if I throw an exception in case of failure

在C++项目中,我使用JNI调用API来启动JVM。我已经围绕JVM做了一些包装,因此我可以以面向对象的方式使用所有需要的部分。到目前为止效果很好。现在,如果JVM没有启动(JNI_CreateJavaVM返回值JNI_CreateJavaVM之后抛出异常,我遇到缓冲区溢出。如果我在没有JNI_CreateJavaVM调用的情况下引发异常,它会按预期工作。有人知道这里的问题是什么吗?或者如何调试?环境:Windows、VisualStudio2008JDK:jrockit27.6jdk16005,但也发生在SUNstockone上干杯多米尼克 最佳答案

c++ - 如何在头文件中声明类型转换并在cpp文件中实现?

它对我不起作用。我有一个头文件和一个cpp文件。需要定义一个从我的类到INT的转换运算符,但在H文件中声明它并在cpp文件中实现时它会给我“语法错误”。也许我的语法错误?在我在“公共(public)”中的H文件中:operatorint();在我的cpp文件中:A::operatorint(){returnmNumber;}如果我在H文件中实现该功能,它就可以工作,但我不想那样做。谁能帮忙? 最佳答案 我还想将类声明与实现分开。关键缺失的成分是const://Foobar.hppclassFoobar{public:Foobar()

javascript - 在 Visual Studio 中调试 javaScript。第一次机会异常(exception)

我在visualstudio(C++)中有一个项目。该项目的前端是用javaScript编写的,它是在chtmlview窗口中运行的C++的简单GUI。当项目在visualstudio中以Debug模式运行时,我得到以下信息:First-chanceexceptionat0x75a0812finMyProject.exe:MicrosoftC++exception:Js::JavascriptExceptionObjectatmemorylocation0x001fc524..First-chanceexceptionat0x75a0812finMyProject.exe:Micros

c++ - 将 std::exception_ptr 转换为 boost::exception_ptr

我想使用boost::promise::set_exception()需要一个boost::exception_ptr。问题是boost:exception_ptr似乎只有在我用enable_current_exception包裹所有我的抛出时才能正常工作,我想避免这种情况。(无论如何,我无法为第3方图书馆做到这一点。)我在整个代码中使用std::exception_ptr/std::current_exception,所以我正在寻找一种方法来传递std::exception_ptr,其中boost:exception_ptr是预期的。执行以下操作但编译的东西:boost::excep