exception-handling专题提供exception-handling的最新资讯内容,帮你更好的了解exception-handling。
我尝试了 here的示例程序(使用mingw-w64).该计划崩溃了.所以我编辑了它: #include <iostream> // std::cerr #include <fstream> // std::ifstream int main() { std::ifstream file; file.exceptions(std::ifstream::failb
在C中按值抛出对象时:抛出异常(),这将创建临时对象,如何通过引用捕获它?我知道它的工作原理,但如果它是一个函数返回值或函数调用它会失败而不添加const到类型,有什么区别? 首先,当你写作 throw Exception(); 抛出的内容实际上不是prvalue表达式Exception()创建的临时对象.从概念上讲,有一个单独的对象 – 异常对象 – 从该临时对象初始化,它是实际抛出的异常对象.
在之前需要高健壮性和长启动时间的大规模应用程序中,我一直在验证指针函数参数,当它被记录为“绝不能为NULL”时.如果参数在C中实际为NULL并在C中返回错误代码,那么我会抛出一个std :: invalid_argument异常或类似的异常. 但是,我开始认为也许最好让应用程序立即在同一个函数中的第一个NULL指针取消引用中爆炸 – 然后崩溃转储文件将揭示发生了什么 – 并让一个彻底的测试过程发现
我有几个与setjmp / longjmp用法有关的问题 – > setjmp(jmp ___ buf stackVariables)返回0的用途是什么.这是默认值,我们无法影响. > setjmp(stackVariables)的唯一意义是在stackVariables中推送堆栈.基本上0告诉我们堆栈是否已成功推送到stack_variables. >当你从longjmp返回时,它们有一次是非零
我想在某种形式的异常类中封装Win32错误(从GetLastError()返回的错误).但是,我不想拥有单个Win32异常,而是希望能够针对常见错误(例如ERROR_ACCESS_DENIED)捕获特殊异常. 例如,我有像这样声明的类: class WindowsException : public std::exception { public: static WindowsExcept
我有以下代码,其中一个变量正在使用函数调用的结果进行初始化.这个函数抛出所以我设置了一个try-catch来捕获异常.由于某种原因,即使在catch子句运行后,异常仍会出现在屏幕上. #include <iostream> #include <stdexcept> int f() { throw std::invalid_argument("threw"); return 50; } stru
我想使用Boost Process,尽管还没有发布.我做到了 svn co svn://svn.boost.org/svn/boost/sandbox/process/ boost-process 添加了boost-process以包含路径(-I)和#included< boost / process.hpp>但编译抱怨没有定义filesystem_error: boost-process/boo
参见英文答案 > Why Base Class catch block catch derived class object?                                    3个 >             Why throw at derived class catches by base?                                    5个 如果
从Cython调用时,我在处理自定义C异常时遇到一些麻烦. 我的情况如下:我有一个库,它使用CustomLibraryException来处理所有异常.我想要的是基本上得到错误消息并用它引发 Python错误. user guide有一些提示,但它有点不明确. 第一种可能性是: cdef int bar()除了ValueError 这会将CustomLibraryException转换为Value
从析构函数中抛出异常的主要问题是,在析构函数被调用的时刻,另一个异常可能是“in flight”(std :: uncaught_exception()== true),因此在这种情况下不太明显.用新的例外覆盖旧的例外将是处理这种情况的可能办法之一.但是,在这种情况下,必须调用std :: terminate(或另一个std :: terminate_handler). C 11通过std ::
给出这个代码: struct A { A(int e) { throw e; } }; struct B { A a{42}; // Same with = 42; syntax }; int main() { try { B b; } catch (int const e) { return e; } } 当编译GCC(
据我所知,move-constructors和move-assign必须标记为noexcept,以便编译器在例如在向量内重新分配时使用它们. 但是,是否存在任何真实情况,其中move-assign,move-construct可能实际抛出? 更新: 例如,当构造不能进行无掷移动时,具有已分配资源的类. However, is there any real-world case where a mo
在C中,我试图捕获所有类型的异常(如C#中的catch(异常)).怎么做而且,怎样才能捕捉到零除异议? catch (...) { // Handle exceptions not covered. } 重要注意事项: >一个更好的方法是捕获特定类型的异常,您可以从中实际恢复,而不是所有可能的异常. catch(…)也会捕获某些严重的系统级别的异常(根据编译器的不同而不同),您将无法从中可靠
由于吃异常总是糟糕的juju,并且重新抛出异常会丢失调用堆栈,重新确定以下内容的正确方法是什么? 饮食异常: try { … do something meaningful } catch(SomeException ex) { // eat exception } try { ... } catch(SomeException e) { //Do whatever is neede
当我的 IOS应用程序崩溃时,我想在我的网站上ping一个url.放置异常捕获器的最佳位置在哪里可以快速ping外部URL,然后将异常重新推送到操作系统? 我们在我们的一个iPad应用程序上使用 CrashKit,在崩溃时收集崩溃日志,并将其发送到我们的服务器进行分析.当然,你可以改为ping一个URL,或者做任何你想添加到信号/异常处理例程中. 图书馆很容易整合,我建议你看看.
在C掷当在catch块内执行时,将块内的当前捕获的异常重新抛出. 在this answer中,异常调度程序的一个想法是经常应用复杂的异常处理来解决减少代码复制的一个解决方案: try { CodeThatMightThrow(); } catch(...) { ExceptionHandler(); } void ExceptionHandler() { try {
我正在尝试跟随这个页面上的例子: http://www.boost.org/doc/libs/1_40_0/libs/exception/doc/motivation.html 一分钟我尝试以下行: throw file_read_error() << errno_code(errno); 我收到一个错误: error C2440: '<function-style-cast>' : cannot
说我有: try { externalLibrary::doSomething(); } catch (std::exception &e) { //yay I know what to do } catch (...) { //darn, I've no idea what happened! } 可能有些情况下您会收到异常,并且您不知道来自哪里或为什么 – 在一些没有调试信息的外部库中.
我稍稍改变了标题,因为我认为这是更恰当的问题. 你会重构吗(好像合法使用goto)? 如果,你如何重构以下代码来删除转到语句? if (data.device) { try { ... } catch(const std::exception&) { goto done; } ... // more things which should not b
有这样的代码: char text[] = "zim"; int x = 777; 如果我查看堆栈中的x和文本放置的输出是: 09 03 00 00 7a 69 6d 00 哪里: > 09 03 00 00 = 0x309 = 777 < - int x = 777 > 7a 69 6d 00 = char text [] =“zim”(ASCII码) 现在有了try..catch的代码: ch