Java 在验证中检查多个条件

Java 在验证中检查多个条件,java,Java,下面是实现的完整抽象类。我想知道,如果攻击和战士等级为0,是否有办法返回两个异常。在这种情况下,我想显示两条消息,但如果我只对它们中的每一条单独进行测试,我似乎无法在异常中抛出第二条消息。例如,如果我测试攻击(0){ 抛出新的IllegalStateException(“攻击必须大于0”); }else if(W.attack您可以单独检查每个条件,并将所需的子消息附加到结果消息中,如果消息长度>0,则引发异常。类似于: public void validate(Warrior W) {

下面是实现的完整抽象类。我想知道,如果攻击和战士等级为0,是否有办法返回两个异常。在这种情况下,我想显示两条消息,但如果我只对它们中的每一条单独进行测试,我似乎无法在异常中抛出第二条消息。例如,如果我测试攻击(0){ 抛出新的IllegalStateException(“攻击必须大于0”);
}else if(W.attack您可以单独检查每个条件,并将所需的子消息附加到结果消息中,如果消息长度>0,则引发异常。类似于:

public void validate(Warrior W) {
    String message = "";
    if (W.level <= 0) {
        message += "Level must be greater than 0. ";
    }
    if (W.defense <= 0) {
        message += "Defense must be greater than 0. ";
    }
    if (W.attack <= 0) {
         message += "Attack must be greater than 0. ";
    }
    if (!message.isEmpty()) {
        throw new IllegalStateException(message);
    } 
    else {                   
        //do whatever
    }
}
公共无效验证(W){
字符串消息=”;

如果(W.level)您确定应该通过抛出异常来处理此问题吗?异常用于异常行为,而不是控制程序流。我必须根据测试的方式使用抛出异常。因此使用了这么长的if-else。我正在寻找一种不必对每个组合抛出异常的方法这可能是无效的。由于消息相同,我希望能够同时抛出这两条消息,而不是使用组合消息创建新字符串。您应该按照希望它们显示的顺序检查条件。只会抛出检测到的第一条消息。谢谢。这解决了我的问题,看起来更干净韩:我提供的方法。@ShreyanshVyas,不客气。如果我能帮上忙,我很高兴。
public void validate(Warrior W) {
    String message = "";
    if (W.level <= 0) {
        message += "Level must be greater than 0. ";
    }
    if (W.defense <= 0) {
        message += "Defense must be greater than 0. ";
    }
    if (W.attack <= 0) {
         message += "Attack must be greater than 0. ";
    }
    if (!message.isEmpty()) {
        throw new IllegalStateException(message);
    } 
    else {                   
        //do whatever
    }
}