【发布时间】:2020-12-30 14:40:29
【问题描述】:
我正在尝试验证我的邮政编码,但我想的方法行不通,我不明白为什么。
我创建了一个验证器,如果它无效,它必须抛出一个ValidationException。
@Service
public class ZipCodeValidator{
public void validate(String zipCode){
validateNotEmpty(zipCode);
validateHasNoSpaces(zipCode);
}
private void validateNotEmpty(String zipCode){
if (zipCode.length() != 0){
throw new ValidationException("Postal Code can't be empty");
}
}
private void validateHasNoSpaces(String zipCode) {
if (zipCode.contains(" ")){
throw new ValidationException("Postal Code can't contain spaces");
}
}
}
在我的服务中,我收到邮政编码我想抛出我的自定义异常(我将错误消息传递给它),如下所示:
try{
validator.validate(zipCode);
}catch (ValidationException ex){
throw new ZipCodeValidationException(ex.getMessage());
}
但它似乎不起作用,该异常没有被捕获,因此程序运行得更远。
我做错了什么?
整个方法错了吗?你会推荐什么?
这是我的自定义异常
public class ZipCodeValidationException extends Exception{
public ZipCodeValidationException(String message) {
super(message);
}
}
【问题讨论】:
-
你应该到处使用 Exception 而不是 ValidationException。
-
您要在哪里验证 Controller 中的 ZipCode ?如果您在控制器内部进行操作,则有特定的位置
-
@silentsudo 它目前正在我从控制器调用的服务中发生。但我是一名初级学生,所以我不知道是否可以这样做。
-
你能显示
zipCode的代码值吗?看起来你的代码中有错误@Diana -
@Deadpool zipCode 的值是
"",在我将ValidationException更改为Exception之后,我的代码开始做它应该做的事情。
标签: java spring-boot exception validationexception