编写一个带throws子句的检查方法,用来检查字符串是否仅有英文字符和数字组成,如果是空字符或包含非法字符则抛出异常对象,并编写测试方法进行编写
时间: 2024-12-12 09:20:04 浏览: 16
为了实现这个功能,我们可以定义一个名为`checkValidString`的静态方法,它接受一个字符串作为参数,然后检查该字符串只包含英文字符和数字。如果发现不符合条件的情况,将抛出一个自定义异常,例如`InvalidCharacterException`。下面是一个具体的实现示例:
```java
import java.text.ParseException;
import java.util.regex.Pattern;
public class StringChecker {
// 自定义异常
public static class InvalidCharacterException extends RuntimeException {
public InvalidCharacterException(String message) {
super(message);
}
}
// 检查字符串方法,带有 throws 子句
public static void checkValidString(String input) throws InvalidCharacterException {
Pattern pattern = Pattern.compile("^[a-zA-Z0-9]*$"); // 匹配只包含字母和数字的正则表达式
if (input.isEmpty()) {
throw new InvalidCharacterException("The string is empty.");
} else if (!pattern.matcher(input).matches()) {
throw new InvalidCharacterException("The string contains invalid characters.");
}
}
// 测试方法
public static void testCheckValidString() {
try {
checkValidString("HelloWorld123"); // 正确的字符串
System.out.println("Test passed for HelloWorld123");
checkValidString(""); // 空字符串
// 这一行不会被执行,因为会抛出异常
// System.out.println("Test passed for empty string");
checkValidString("Hello@World123"); // 非法字符
// 这一行也不会被执行,因为会抛出异常
// System.out.println("Test passed for Hello@World123");
} catch (InvalidCharacterException e) {
System.out.println("Test failed with error: " + e.getMessage());
}
}
// 如果需要运行测试,可以在这里添加main函数调用testCheckValidString()
// public static void main(String[] args) {
// testCheckValidString();
// }
}
```
在这个例子中,`checkValidString`方法首先检查输入字符串是否为空,如果为空就抛出异常。接着,它通过正则表达式验证字符串是否只包含英文字符和数字。如果不符合条件,同样抛出异常。`testCheckValidString`方法对这些情况进行了一系列测试,如果遇到异常,会在控制台打印错误信息。
阅读全文