Я новичок в программировании на C ++, и у меня есть два вопроса о функции throw () для замедления метода.
Если я правильно понимаю, мы используем команду throw (class_name), чтобы отметить компилятор что метод не должен вызывать никаких исключений, кроме «имя_класса». (Если я буду использовать 'throw ()', то метод вообще не должен генерировать никаких исключений).
Вопросы:
Если класс B наследуется от класса A (и А наследуют от класса исключений), Дозе ли метод void foo() throw(A)
, позволяющий выбрасывать объект исключений класса В?
Почему я получаю предупреждение о компиляции для следующего кода? Какую дозу это означает?
class MyException: public exception{
public:
virtual const char* what() const throw(){
return "Something bad happened!";
}
};
class Test{
public:
void goseWrong() throw(MyException){
throw MyException();
}
};
int main(void){
try{
Test test;
test.goseWrong();
}catch(MyException &e){
cout << e.what() << endl;
}
cout << "Still running" << endl;
return 0;
}
Предупреждение: динамические c спецификации исключений устарели в C ++ 11 [-Wdeprecated] 48 | void goseWrong () throw (MyException) {
Спасибо!