当前位置: 首页 > 知识库问答 >
问题:

spring中内部异常的自定义json响应

翟冯浩
2023-03-14

当在Spring中实现全局异常处理程序时,我注意到,如果不能识别接受头,Spring会抛出它自己的内部错误。我需要的是返回一个自定义的JSON错误结构。适用于特定于应用程序的异常,完全失败。

此代码告诉我"未能调用@ExceptionHandler方法:publicjava.util.Map RestExceptionHandler.springMalformedAcceptHeaderExctive()",当我尝试请求具有不正确的接受头的页面时。是否有其他方法返回自定义JSON的Spring内部异常

@ControllerAdvice
public class RestExceptionHandler {

    @ExceptionHandler(value = HttpMediaTypeNotAcceptableException.class)
    @ResponseBody
    public Map<String, String> springMalformedAcceptHeaderException() {

         Map<String, String> test = new HashMap<String, String>();
         test.put("test", "test");
         return test;
     }
} 

共有1个答案

董高洁
2023-03-14

最终发现,唯一的方法是手动进行json映射。

@ExceptionHandler(value = HttpMediaTypeNotAcceptableException.class)
@ResponseBody
public String springMalformedAcceptHeaderException(HttpServletResponse response) {
    // populate errorObj, set response headers, etc
    ObjectWriter jsonWriter = new ObjectMapper().writer();
    try {
        return  jsonWriter.writeValueAsString(errorObj);
    } catch(Exception e){}
    return "Whatever";
}
 类似资料:
  • 我有这个方法来处理所有缺少请求头的异常,但在一个控制器中,希望接收一个json作为主体。如果它是无效的json或为null,则会使用自定义消息删除异常: {“消息”:“错误请求”,“详细信息”:[“必需的请求正文丢失:public org.springframework.http.responseentity packages.fazerlogin(packages.bodylogin)throw

  • 我用Spring5反应式编写了一个自定义异常 我把这个叫做服务: 但是当我到达这个页面时,会抛出一个异常,但它不是404,而是一个空指针异常和一个错误500页面,但有正确的消息? AddressNotFound永远不会抛出,只有Nullpointer异常,但会抛出我的自定义消息???你能帮帮我吗? 这是我的控制器: 谢谢

  • 我在基于Spring Boot的Rest服务中定义了一个全局异常处理: 那么我如何在我的应用程序中定义一个自定义的异常响应。

  • 我的要求是,如果post请求的JSON无效,我将需要发送400个HTTP响应代码,如果任何字段不可解析,返回状态代码将为422。例如,post请求可以是: Dto类提供如下:, 这是发出POST请求的控制器, 如果“金额”是,比如说,“sfdfd”,这不是大小数,我们应该提供422。但如果“金额”为“-12.3343”,则这是约束验证错误,但数据有效且可分析。所以我们不能拥有422。 这是我的异常

  • 问题内容: 我们正在使用Spring MVC + Spring Security + Hibernate创建一个RESTful API。该API可以生成JSON和HTML。做好弹簧安全性的错误处理让我头疼: 身份验证可以通过多种方式进行:BasicAuth,通过POST请求中的不同参数以及通过Web登录。对于每种身份验证机制,在Spring Security xml配置的名称空间元素中声明了一个过

  • 如果 Java 提供的内置异常类型不能满足程序设计的需求,这时我们可以自己设计 Java 类库或框架,其中包括异常类型。实现自定义异常类需要继承 Exception 类或其子类,如果自定义运行时异常类需继承 RuntimeException 类或其子类。 自定义异常的语法形式为: 在编码规范上,一般将自定义异常类的类名命名为 XXXException,其中 XXX 用来代表该异常的作用。 自定义异