是否可以从java中的If语句中抛出异常



我有一个正在处理的作业,我们被告知使用异常处理来回答这个问题。问题是:

validateShelveNo(String)方法接收搁置号并检查shelveNo是否以ABC开头。如果不是,则该方法抛出异常错误"搁置号必须以ABC开头"。此外,该方法还检查条形码是否以101到120之间的任何数值结尾,否则该方法throws"搁置号必须在101和120之间"。当搁置号满足所有要求时,该方法必须返回true。

我的答案是:

public boolean validateShelveNo(String shelveNo) {
boolean test2 = true;

if (shelveNo.startsWith("ABC") == true)) {
test2 = true;
}
else
{
throw new Exception("The shelf number must start with ABC ");
test2 = false;
}

String lastThreeDigits = "";
if (shelveNo.length() > 3)
{
lastThreeDigits = shelveNo.substring(shelveNo.length() - 3);
for (int i = 0; i < lastThreeDigits.length; i++) {
if ((Character.isDigit(lastThreeDigits.charAt(i)) == true)) {
int digits = Integer.parseInt(lastThreeDigits);
if (digits >= 101 && digits <= 120) {
test2 = true;
}
else {
throw new IllegalArgumentException("The shelf number must be within 101 and 120");
test2 = false;
}
test2 = true;
}
else {
System.out.println(" The last 3 Characters are not numeric");
test2 = false;
}
}
}
else {
throw new IllegalArgumentException("shelf number has less than 3 characters!");
test2 = false;
}
}

return test2;
}

这是我的实现。希望只使用您所知道的java部分。

/**
* Validates the shelf number. The number must begin with "ABC" and must terminate with
* a three digit integer number between 101 and 120. Method throws unchecked exception
* if the supplied shelf number is not valid.
* 
* @param shelfNo - the shelf number to validate.
* 
* @return  true if shelfNo is valid.
*/
public boolean validateShelfNo(String shelfNo) {
if (shelfNo == null) {
throw new NullPointerException("Null shelf number.");
}
int length = shelfNo.length();
if (length == 0) {
throw new IllegalArgumentException("Empty shelf number.");
}
if (length < 6) {
throw new IllegalArgumentException("Invalid shelf number: " + shelfNo);
}
shelfNo = shelfNo.toUpperCase();
if (!shelfNo.startsWith("ABC")) {
throw new IllegalArgumentException("Invalid shelf number: " + shelfNo);
}
String lastThreeDigits = shelfNo.substring(length - 3);
int number = Integer.parseInt(lastThreeDigits); // throws NumberFormatException if 'suffix' not a number
if (number < 101  ||  number > 120) {
throw new IllegalArgumentException("Number not between 101 and 120.");
}
return true;
}

首先,我添加javadoc注释,解释该方法的作用。因为这是一个公共方法,任何人都可以调用它,所以你需要向他们解释它的作用。

该方法可以用任何类型的参数值调用,因此在检查它是否以ABC开头并以101到120之间的数字结束之前,您需要确保它不是null并且至少包含六个字符。

由于每当shelfNo无效时,该方法就会抛出异常,因此该方法只需要返回true。当一个方法抛出异常时,它不需要返回任何内容。

最新更新