Извините, если пост новичок, я в основном математик.
Я пишу небольшой инструмент командной строки C ++ для одного из моих классов по исследованию операций.
У меня есть что-то вроде:
try {
if( *some condition* ) {
throw MY_ENUM;
}
...
}
catch (int e) {
if (e == MY_ENUM) {
// output some diagnostics and exit
}
...
}
Но я продолжаю получать SIGABRT вместо MY_ENUM. Я знаю, это что-то элементарное, что я забыл, но не могу придавить это. Спасибо
Я публикую этот ответ, чтобы он перестал отображаться как оставшийся без ответа. @Mankarse ответил на это правильно и быстро в качестве комментария, поэтому, пожалуйста, примите их ответ вместо моего, если они отправят один.
Исключение здесь не перехватывается, потому что выбрасываемый объект имеет некоторый тип enum, а код выше ловит int
s.
Чтобы поймать выброшенное значение enum, используйте catch (MyEnumType e) { if (e == MY_ENUM) ... }
вместо
Других решений пока нет …