我对Java/Spring领域相当陌生,我正在尝试在我的Spring Boot应用程序中使用@ControllerAdvise。ControllerAdvision捕获异常,但不显示我的自定义响应。
下面是引发异常的RestController的快照
ResponseEntity<MyClass> response = new ResponseEntity<MyClass>(HttpStatus.OK);
try {
response = restTemplate.exchange(url, HttpMethod.GET, entity, MyClass.class);
} catch (HttpClientErrorException ex) {
throw ex;
}catch (HttpServerErrorException ex) {
logger.debug(ex.getMessage() + " Server Status Code - " + ex.getStatusCode());
}
catch(Exception ex) {
logger.debug(ex.getMessage() + " Generic Exception ");
}
以下是@ControllerAdvice
@ControllerAdvice
public class GlobalExceptionHandler extends Exception {
@ExceptionHandler(HttpClientErrorException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse errorHandle(HttpClientErrorException ex) {
String responseBody = ex.getResponseBodyAsString();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ErrorResponse errorResponse = new ErrorResponse();
try {
errorResponse = mapper.readValue(responseBody, ErrorResponse.class);
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return errorResponse;
}
}
@JsonIgnoreProperties
public class ErrorResponse {
@JsonProperty("error")
public Error error;
@JsonProperty("version")
public String version;
}
public class Error {
@JsonProperty("code")
public String Code;
@JsonProperty("message")
public String Message;
public String getCode() {
return Code;
}
public void setCode(String code) {
Code = code;
}
public String getMessage() {
return Message;
}
public void setMessage(String message) {
Message = message;
}
}
{
"timestamp": "2019-11-20T05:42:24.126+0000",
"status": 404,
"error": "Not Found",
"message": "400 Bad Request",
"path": "myApi/somecontroller"
}
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Nov 19 23:40:26 CST 2019
There was an unexpected error (type=Not Found, status=404).
400 Bad Request
这不是一个例外,这是一个错误场景
尝试使用以下代码。
@RestController
public class IndexController implements ErrorController{
private static final String PATH = "/error";
@RequestMapping(value = PATH)
public String error() {
return "Error handling";
}
@Override
public String getErrorPath() {
return PATH;
}
}
需要重写的Spring Boot默认寄存器BasicErrorController
我用Spring5反应式编写了一个自定义异常 我把这个叫做服务: 但是当我到达这个页面时,会抛出一个异常,但它不是404,而是一个空指针异常和一个错误500页面,但有正确的消息? AddressNotFound永远不会抛出,只有Nullpointer异常,但会抛出我的自定义消息???你能帮帮我吗? 这是我的控制器: 谢谢
我有一个使用swing的Java应用程序。我找到了一种方法来捕捉应用程序中所有未捕获的异常(见下文)。我想记录一条消息,为用户显示一个带有消息的对话框,并终止应用程序。问题是,我试图捕捉的是一些swing异常。由于Swing线程已停止,因此无法在UncaughtExceptionHandler中捕获异常后尝试显示对话框。有没有办法显示一个对话框?创建一个新的swing线程或类似的东西? 谢谢
对于一个大学项目,我们需要在Java的5人小组中制作一个游戏。当我们用3D第一人称编写游戏时,我想使用lwjgl。我在运行Ubuntu的家用计算机上编写了一个测试程序。然而,我把它带到了uni,并试图在ArchLinux的机器上运行它,当试图调用Display.create()方法时,它抛出了一个异常。 这是堆栈跟踪: 无法创建可绘制组织。lwjgl。LWJGLException:X Error-
问题内容: 我想在jsp中显示针对Spring安全认证异常的自定义错误消息。 对于错误的用户名或密码, 对于禁用的用户, 我是否需要为此重写AuthenticationProcessingFilter?否则我可以在jsp本身中做一些事情以找到认证异常密钥并显示不同的消息 问题答案: 在Spring安全jar内的 messages.properties中 重新定义属性。例如,添加到类路径 myMes
我正试图自己解决参数问题。 我可以很容易地从NativeWebRequest获取输入参数,并将它们分派到相应的自定义@Param注释参数中。 问题是我还想在这方面做一些语法检查/验证。但如果我在“resolveArgument”中抛出异常,则会向用户显示完整的堆栈跟踪。这将是过度和不安全的。我只想向用户返回一条JSON格式的消息,以显示哪个输入参数语法有错误。
我不能对我的web服务的方法抛出异常。当我在我的方法中抛出异常并尝试从Soap UI测试我的应用程序时,会出现以下错误: 和 我的问题是: 如何为JavaWeb服务编写用户定义的异常? (例如,有一个方法返回一个学生的名字。但是,如果学生在数据库中找不到,会抛出一个错误?)