2

对不起,如果帖子是新的,我主要是一个数学人。

我正在为我的运筹学课程之一编写一个小的 C++ 命令行工具。

我有类似的东西:

try {
   if( *some condition* ) {
      throw MY_ENUM;
   }
   ...
}
catch (int e) {
   if (e == MY_ENUM) {
      // output some diagnostics and exit
   }
   ...
}

但是我不断收到一个 SIGABRT 而不是 MY_ENUM。我知道它是我忘记的基本内容,但无法确定。谢谢

4

1 回答 1

4

我发布了这个答案,所以这不再显示为未回答。@Mankarse 作为评论正确而及时地回答了这个问题,所以如果他们发布一个答案,请接受他们的答案而不是我的答案。


这里的异常没有被捕获,因为被抛出的对象是某种枚举类型,并且上面的代码捕获了ints。

要捕获抛出的枚举值,请catch (MyEnumType e) { if (e == MY_ENUM) ... }改用

于 2012-11-20T00:55:29.500 回答