Я хочу бросить исключение, как это:
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:
Боже мой, это стыдно. Похоже, я вызвал не ту функцию. Мне так жаль, что беспокою вас этим позорным опытом!
Если вы используете 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;
}
Других решений пока нет …