Java - 无效的枚举值在交换机块中不属于默认值

时间:2018-03-20 11:01:28

标签: java enums

我在config.properties中添加了无效值:

# Browser: CHROME, CHROME_NOHEAD, FF32, FF32_NOHEAD, FF64, FF64_NOHEAD
# EDGE, IE32, IE64
browser=oPerA

我使用默认子句设置开关:

public class ServiceHook {
    public enum Browser {
        CHROME, CHROME_NOHEAD, FF32, FF32_NOHEAD, FF64, FF64_NOHEAD, EDGE, IE32, IE64
    }

    public void setUp() throws Throwable {
        String browserConfig = Configuration.readKey("browser"); // Reads the String from the config file
        Browser browser = Browser.valueOf(browserConfig.toUpperCase());

        switch (browser) {
        case CHROME:
            // Do something for each case
            break;
        case CHROME_NOHEAD: break;
        case FF32: break;
        case FF32_NOHEAD: break;
        case FF64: break;
        case FF64_NOHEAD: break;
        case EDGE: break;
        case IE32: break;
        case IE64: break;
        default:
            // Do something for unsupported browser
            break;
        }
    }
}

然而,我正在低于例外:

  

java.lang.IllegalArgumentException:没有枚举常量   jcucumberng.steps.defs.ServiceHook.Browser.OPERA

为什么它不触发默认条款的任何建议?

2 个答案:

答案 0 :(得分:1)

代码没有那么远。

抛出异常的Browser browser = Browser.valueOf(browserConfig.toUpperCase());。您必须将它放在try-catch块中以处理无效值。

答案 1 :(得分:0)

Browser browser = Browser.valueOf(browserConfig.toUpperCase());中的问题(7 th 行),所以

在此行调试' Browser.valueOf(browserConfig.toUpperCase());' 语句,看看究竟发生了什么(看看浏览器中的值是什么)