如何制作带有更多参数的catch块,以便从类的对象中捕获它以获取异常?

问题描述 投票:-1回答:1

我的代码中有三个异常类,所以当我想使用更多的参数(捕获更多不同的对象时,我会遇到编译错误),因此我如何捕获更多异常?

我尝试这样做

try{
        User * u = new FacebookUser(username,password,email,friends,likes,comments);
        network += u;
        }
        catch(InvalidPassword ip,InvalidEmail ie,MaximumSizeLimit ms){
            ip.message();
            ie.message();
            ms.message():
        }

第一个例外是检查密码是否至少包含1个大写,小写和数字。

第二个例外是用于检查电子邮件是否至少具有1 @

第三例外是用于更改静态变量,如果最大值等于n抛出例外。

我的电子邮件和密码抛出异常在我的用户构造函数中。

c++ exception try-catch
1个回答
1
投票

如果您要捕获多种异常,则需要分别捕获它们-否则,如果抛出ip,则InvalidEmail会是什么?

正确的代码将是

try {
    //...
} catch (const InvalidPassword& ip) {
    //...
} catch (const InvalidEmail& ie) {
    //...
} catch (const MaximumSizeLimit& ms) {
    //...
}

等等,您可以使所有这些异常继承到相同的基类,并使该基类的message虚拟函数。

(作为单独的注释,有时使用例外进行此类检查有时被认为是不好的样式)

© www.soinside.com 2019 - 2024. All rights reserved.