如何从反应中捕获自定义 java8 异常?
How to catch custom java8 exception from react?
以下代码生成 UserAlreadyExist 异常。
Optional<User> userCheck = userRepository.findByUsername(createRequest.getUsername());
if(StringUtils.hasText(userCheck.get().getUsername())){
String errorMessage = "User already exist: "+ userCheck.get().getUsername();
throw new UserAlreadyExistException(errorMessage);
}
当我尝试使用这些代码从我的 React 应用程序获取错误消息时,我只收到内部服务器错误消息。我的 header 包含 header 令牌和 application/JSON header.
export const createUserService = (data) => {
return new Promise(((resolve, reject) => {
axios.post(USERS_BASE, data, getHeaderWithToken())
.then(function (response) {
resolve(response);
})
.catch(error=>{
console.log(error)//returns "Internal Server Error" message
console.log(error.response) // returns object with empty message field and other parameters.
reject(error)
})
}));
};
我怎样才能收到我发送的错误信息
String errorMessage = "User already exist: "+ userCheck.get().getUsername();
throw new UserAlreadyExistException(errorMessage);
这是我的 UserAlreadyExistException class 顺便说一句。
public class UserAlreadyExistException extends RuntimeException {
public UserAlreadyExistException(String message) {
super(message);
}}
您可以 return 使用 @RestControllerAdvice 为您抛出的自定义异常自定义响应。
请检查下面的示例。
@RestControllerAdvice
public class ControllerExceptionHandler {
@ExceptionHandler(value = {UserAlreadyExistException.class})
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public ErrorMessage userAlreadyExistException(UserAlreadyExistException ex, WebRequest request) {
ErrorMessage message = new ErrorMessage(
status,
date,
ex.getMessage(),
description);
return message;
}
}
您会更容易看到 Frontent 应用程序中的错误,并且您会像这样 return 响应。
以下代码生成 UserAlreadyExist 异常。
Optional<User> userCheck = userRepository.findByUsername(createRequest.getUsername());
if(StringUtils.hasText(userCheck.get().getUsername())){
String errorMessage = "User already exist: "+ userCheck.get().getUsername();
throw new UserAlreadyExistException(errorMessage);
}
当我尝试使用这些代码从我的 React 应用程序获取错误消息时,我只收到内部服务器错误消息。我的 header 包含 header 令牌和 application/JSON header.
export const createUserService = (data) => {
return new Promise(((resolve, reject) => {
axios.post(USERS_BASE, data, getHeaderWithToken())
.then(function (response) {
resolve(response);
})
.catch(error=>{
console.log(error)//returns "Internal Server Error" message
console.log(error.response) // returns object with empty message field and other parameters.
reject(error)
})
}));
};
我怎样才能收到我发送的错误信息
String errorMessage = "User already exist: "+ userCheck.get().getUsername();
throw new UserAlreadyExistException(errorMessage);
这是我的 UserAlreadyExistException class 顺便说一句。
public class UserAlreadyExistException extends RuntimeException {
public UserAlreadyExistException(String message) {
super(message);
}}
您可以 return 使用 @RestControllerAdvice 为您抛出的自定义异常自定义响应。 请检查下面的示例。
@RestControllerAdvice
public class ControllerExceptionHandler {
@ExceptionHandler(value = {UserAlreadyExistException.class})
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public ErrorMessage userAlreadyExistException(UserAlreadyExistException ex, WebRequest request) {
ErrorMessage message = new ErrorMessage(
status,
date,
ex.getMessage(),
description);
return message;
}
}
您会更容易看到 Frontent 应用程序中的错误,并且您会像这样 return 响应。