Кодовые вызовы завершаются вместо выдачи исключения

Я хочу бросить исключение, как это:

if (...) {
throw "not found";
}

и поймать это так:

try {
myfunction();
} catch (const char * msg) {
cout << msg << endl;
}

но тогда это говорит

terminate called after throwing an instance of 'char const*'

Почему звонит терминирует и не выбрасывает мой «не найден»?

РЕДАКТИРОВАТЬ:

Я изменил это на это:

try {
throw "not found";
} catch (const char * msg) {
cout << "test" << endl;
} catch(...) {
cout << "test" << endl;
}

и я получаю ту же ошибку!

EDIT2:
Когда я не вызываю определенный метод выше, это работает! Но я не понимаю, что этот метод должен делать с исключениями, я не использовал его ни в какой другой функции, кроме вышеупомянутой функции myfunction (). Позвольте мне проверить еще немного, и тогда я вернусь к вам!

EDIT3:

Боже мой, это стыдно. Похоже, я вызвал не ту функцию. Мне так жаль, что беспокою вас этим позорным опытом!

1

Решение

Если вы используете throw вне блока try / catch, вызывается terminate. Убедитесь, что функция, которая выбрасывает, находится в блоке try.

#include <iostream>

void myFunc()
{
throw "Throwing!";
}

int main()
{
try
{
myFunc();
}
catch(...)
{
std::cout << "Works fine.";
}

myFunc(); // Terminate gets called.

return 0;

}
1

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

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

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