我想知道是否这样的代码在抛出异常后是否总是会中断并且不会继续执行,因此该代码不会继续执行第二个temp.dodaj(b)。

    Avto *a = new Avto("lambo",4);
    Avto *b = new Avto("BMW",3);
    Avto *c = new Avto("lexus",6);
    SeznamAvtov temp;
    try {
        temp.dodaj(a);
        temp.dodaj(b);
        temp.dodaj(c); // here the exception will be thrown
        temp.dodaj(b);
    } catch(PokvarjenAvto &e) {
        e.error();
    }
    temp.pisi();

我的第二个问题是,是否可以抛出包含有关错误数据的对象,还是必须使用const char * what()方法的异常&e?

谢谢您的回答

最佳答案



是的,它会像您描述的那样运行。



不,您可以抛出任何想要的类型。但是,通常的约定是,异常类型应从std::exception派生并覆盖const char* what()函数。

10-06 01:30