public String getTypeOfDayWithSwitchStatement(int dayOfWeekArg) {
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "Start of work week";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "Midweek";
break;
case "Friday":
typeOfDay = "End of work week";
break;
case "Saturday":
case "Sunday":
typeOfDay = "Weekend";
break;
default:
throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
}
return typeOfDay;
}
Run Code Online (Sandbox Code Playgroud)
注释以下行,抛出编译错误:
throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
Run Code Online (Sandbox Code Playgroud)
也typeOfDay被视为未初始化的变量.
但为什么它之前不被视为未初始化的变量.
假设dayOfWeekArg包含除了一天名称之外的其他内容,因此在switch语句default中达到了案例.
如果不在那里抛出异常,则执行将继续执行return方法底部的语句,但typeOfDay不会设置为任何值.那是一个错误.
如果你确实抛出了异常,那么return当dayOfWeekArg包含除了一天的名字之外的其他内容时,永远不会达到该语句,所以没有问题.