无法捕获C ++异常

kirillbobyrev

我想在尝试使用某个类的复制构造函数时会捕获一个异常,这会抛出异常。

#include <iostream>

class dont_copy_me {
public:
    dont_copy_me() {}
    dont_copy_me(const dont_copy_me& rhs) {throw;}
    dont_copy_me(dont_copy_me&& rhs) {throw;}
    ~dont_copy_me() {}
};

int main() {
    try {
        dont_copy_me obj;
        dont_copy_me obj_1(obj);
    } catch(...) {
        std::cout << "exception caught" << std::endl;
    }
    return 0;
}

但我不断

terminate called without an active exception
Aborted (core dumped)

怎么了?如何捕获复制构造函数引发的异常?(因为这就是我所需要的)

眼睛的树

实际抛出这样的异常:

#include <iostream>
#include <stdexcept>

class dont_copy_me {
public:
    dont_copy_me() {}
    dont_copy_me(const dont_copy_me& rhs) {throw std::runtime_error("Fail!");}
    dont_copy_me(dont_copy_me&& rhs) {throw std::runtime_error("Fail!");}
    ~dont_copy_me() {}
};

int main() {
    try {
        dont_copy_me obj;
        dont_copy_me obj_1(obj);
    } catch(...) {
        std::cout << "exception caught" << std::endl;
    }
    return 0;
}

这可以满足您的需求。在这里,您可以找到标准例外的列表(在“例外类别”下)。

throw仅当您已经在处理活动异常时,空表达式才起作用:

抛出当前处理的异常。放弃执行当前catch块,并将控制权传递给下一个匹配的异常处理程序(但不传递给同一try块之后的另一个catch子句:其复合语句被视为已“退出”),重新使用现有的异常对象:没有新的对象。仅当当前正在处理异常时才允许使用此格式(否则,将调用std :: terminate)。如果在构造函数上使用,与function-try-block相关的catch子句必须通过重新抛出退出。

这里开始,强调我的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法从c ++中的函数捕获异常

来自分类Dev

无法从c ++中的函数捕获异常

来自分类Dev

无法捕获 c# web api 异常

来自分类Dev

无法捕获某些异常

来自分类Dev

无法捕获异常NoSuchElementException

来自分类Dev

无法捕获异常

来自分类Dev

无法捕获ObjectOptimisticLockingFailureException异常

来自分类Dev

无法捕获异常

来自分类Dev

无法捕获 TweepError 异常

来自分类Dev

无法捕获SystemExit异常Python

来自分类Dev

无法捕获Pyspark UDF异常

来自分类Dev

无法显示捕获的异常(newSingleThreadScheduledExecutor)

来自分类Dev

BugSense无法记录捕获的异常

来自分类Dev

无法捕获Python模拟异常

来自分类Dev

无法通过C ++中的引用捕获引发的异常

来自分类Dev

为什么Python无法捕获C ++中引发的异常?

来自分类Dev

boost-python无法捕获和翻译c ++异常

来自分类Dev

无法在 try-catch C# 中捕获异常

来自分类Dev

尝试捕获无法捕获Java(Android)异常

来自分类Dev

尝试捕获无法捕获Java(Android)异常

来自分类Dev

捕获OutOfMemory异常C#

来自分类Dev

C#等待并捕获异常

来自分类Dev

Android无法捕获Jersey RESTful异常

来自分类Dev

为什么该程序无法捕获异常?

来自分类Dev

无法从PrintUI.dll,PrintUIEntry捕获异常

来自分类Dev

无法在线程程序中捕获异常

来自分类Dev

捕获异常:错误:svd()无法收敛

来自分类Dev

无法捕获servlet中的主键异常

来自分类Dev

无法在Module.php中捕获异常