Использование throw для объявления функции - PullRequest
0 голосов
/ 15 апреля 2020

Я новичок в программировании на C ++, и у меня есть два вопроса о функции throw () для замедления метода.

Если я правильно понимаю, мы используем команду throw (class_name), чтобы отметить компилятор что метод не должен вызывать никаких исключений, кроме «имя_класса». (Если я буду использовать 'throw ()', то метод вообще не должен генерировать никаких исключений).

Вопросы:

  1. Если класс B наследуется от класса A (и А наследуют от класса исключений), Дозе ли метод void foo() throw(A), позволяющий выбрасывать объект исключений класса В?

  2. Почему я получаю предупреждение о компиляции для следующего кода? Какую дозу это означает?

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) {

Спасибо!

...