我正在做一个REST API,当我故意尝试错误的输入来强制错误时,我在这个API中遇到了麻烦:
第一个月
答复的正文如下:
{
"timestamp": "2023-12-01T22:43:11.433+00:00",
"status": 400,
"error": "Bad Request",
"message": "Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; For input string: \"43178asdas\"",
"path": "/objectName/43178asdas"
}
字符串
我想为这个错误创建一个自定义消息,让它更清楚地表明预期的输入是Long类型,但请求收到的却是String类型,但我无法处理这个异常。
我所尝试的:
public class ThisObjectInvalidaException extends TypeMismatchException {
public ThisObjectInvalidaException(String msg){
super(msg);
}
}
型
和
public SaidObject consult(Long param) throws ThisObjectInvalidaException {
try {
return this.objRepository.findById(identifier)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "No object found with the following IDENTIFIER: " + identifier + "."));
} catch (TypeMismatchException e){
throw new ThisObjectInvalidaException("The IDENTIFIER you entered is invalid, as it should contain only numbers.");
}
}
型
也许我在错误类型中遗漏了一些东西,但不确定。
1条答案
按热度按时间r9f1avp51#
您可以简单地将ExceptionException添加到控制器。
范例:
字符串
作为替代解决方案,您可以创建自定义异常并抛出它。
例二:
型
然后将其添加到异常处理程序:
型