尝试在Try中捕获检查多个对象

Try-catch checking multiple objects in try

本文关键字:检查 对象 Try      更新时间:2023-10-16

我想知道像这样的代码在抛出异常后是否总是会中断而不继续,这样代码就不会继续到第二个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必须是?

谢谢你的回答

我想知道像这样的代码在抛出异常后是否总是会中断而不继续,这样代码就不会继续到第二个temp.dodaj(b).

是的,它将按照您描述的方式运行。

我的第二个问题是,抛出包含错误数据的对象可以吗;带有const char*what()方法的e必须是?

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