我创建了自定义异常ProduitIntrouvableException
,它扩展了RuntimeException
@ResponseStatus(HttpStatus.NOT_FOUND)
public class ProduitIntrouvableException extends RuntimeException {
public ProduitIntrouvableException(String s) {
super(s);
}
}
在我的控制器中,当我的p
为null
时,我将其扔了
@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
答案 0 :(得分:2)
来自Spring Boot 2.3 Release Notes:
默认情况下,错误消息和所有绑定错误不再包含在默认错误页面中。这降低了将信息泄露给客户端的风险。
server.error.include-message
和server.error.include-binding-errors
可以分别用来控制消息的包含和绑定错误。支持的值为always
,on-param
和never
。