自定义异常在Spring Boot中返回空消息

时间:2020-08-05 16:45:55

标签: java spring spring-boot rest exception

我创建了自定义异常ProduitIntrouvableException,它扩展了RuntimeException

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ProduitIntrouvableException extends RuntimeException {    
    public ProduitIntrouvableException(String s) {
        super(s);
    }
}

在我的控制器中,当我的pnull时,我将其扔了

@RestController
public class ProductController {

    @Autowired
    private ProductDao productDao;


    @GetMapping(value="/Produits/{id}")
    public MappingJacksonValue afficherUnProduit(@PathVariable int id) throws ProduitIntrouvableException {
        Product p = productDao.findById(id);
       
       if(p==null) 
            throw new ProduitIntrouvableException("Le produit avec l'id "+id+" n'existe pas");

        SimpleBeanPropertyFilter monFiltre = SimpleBeanPropertyFilter.serializeAllExcept("prixAchat","id");

        FilterProvider listDeNosFiltres = new SimpleFilterProvider().addFilter("monFiltreDynamique", monFiltre);

        MappingJacksonValue produitsFiltres = new MappingJacksonValue(p);

        produitsFiltres.setFilters(listDeNosFiltres);

        return produitsFiltres;
    }

   
}

但是当我将字符串"product not found"传递给构造函数时,却收到如下空消息,但我不明白为什么它会被忽略

{
   "timestamp": "2020-08-05T16:36:06.825+00:00",
   "status": 404,
   "error": "Not Found",
   "message": "",
   "path": "/Produits/40"
}

可能是什么原因。

Spring Boot版本: 2.3.2.RELEASE

1 个答案:

答案 0 :(得分:2)

来自Spring Boot 2.3 Release Notes

默认情况下,错误消息和所有绑定错误不再包含在默认错误页面中。这降低了将信息泄露给客户端的风险。 server.error.include-messageserver.error.include-binding-errors可以分别用来控制消息的包含和绑定错误。支持的值为alwayson-paramnever

相关问题