SIGABRT C ++, выбрасывая исключения

Извините, если пост новичок, я в основном математик.

Я пишу небольшой инструмент командной строки C ++ для одного из моих классов по исследованию операций.

У меня есть что-то вроде:

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

Но я продолжаю получать SIGABRT вместо MY_ENUM. Я знаю, это что-то элементарное, что я забыл, но не могу придавить это. Спасибо

1

Решение

Я публикую этот ответ, чтобы он перестал отображаться как оставшийся без ответа. @Mankarse ответил на это правильно и быстро в качестве комментария, поэтому, пожалуйста, примите их ответ вместо моего, если они отправят один.


Исключение здесь не перехватывается, потому что выбрасываемый объект имеет некоторый тип enum, а код выше ловит ints.

Чтобы поймать выброшенное значение enum, используйте catch (MyEnumType e) { if (e == MY_ENUM) ... } вместо

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]