我的代码中有三个异常类,所以当我想使用更多的参数(捕获更多不同的对象时,我会遇到编译错误),因此我如何捕获更多异常?
我尝试这样做
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
抛出例外。
我的电子邮件和密码抛出异常在我的用户构造函数中。
如果您要捕获多种异常,则需要分别捕获它们-否则,如果抛出ip
,则InvalidEmail
会是什么?
正确的代码将是
try {
//...
} catch (const InvalidPassword& ip) {
//...
} catch (const InvalidEmail& ie) {
//...
} catch (const MaximumSizeLimit& ms) {
//...
}
等等,您可以使所有这些异常继承到相同的基类,并使该基类的message
虚拟函数。
(作为单独的注释,有时使用例外进行此类检查有时被认为是不好的样式)