gpt4 book ai didi

java - 不同异常的相同 ExceptionMapper

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:10 25 4
gpt4 key购买 nike

我的应用程序提供了一个 RESTful 接口(interface)来执行某些操作。我正在使用 ExceptionMapper 捕获 NoResultExceptionEntityNotFoundException 等异常,然后返回 404 状态代码或 NumberFormatExceptionConstraintViolationException 并返回状态代码 400... 等等。

我的问题是 ExceptionMapper 每次只允许我选择一种异常;所以我不能对所有错误 400 和其他形式的所有错误 404 使用相同的类。

有什么方法可以创建映射两种不同类型异常的 ExceptionMapper 吗?

我的另一个选择是更改我的函数以返回一个 Response 而不是一个 String(标记为 @Produces("application/json")); 然后每次都设置状态代码;但我认为这是最糟糕的...

最佳答案

您可以针对异常父类(super class)(即 java.lang.Exception)编写一个 ExceptionMapper,然后根据特定的异常类提供不同的行为,例如:

public class MyExceptionMapper implements ExceptionMapper<Exception> {
@Override
public Response toResponse(Exception exception) {
if (exception instanceof EntityNotFoundException) {
...
}
else (exception instanceof NumberFormatException) {
...
}
else {
// The catch-all handler...
}
}
}

但在我看来,这不如为每种类型的异常编写单独的映射器那么干净。一方面,这个映射器将捕获所有异常,另一方面,随着时间的推移,这个类可能会变得难以处理。也许这是代码风格的问题。

关于java - 不同异常的相同 ExceptionMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26386155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com