java相同的异常针对不同的异常
我的应用程序提供了一个RESTful接口来执行一些操作。我正在使用ExceptionMapper
捕获异常,如NoResultException
或EntityNotFoundException
,然后返回状态代码404,或异常,如NumberFormatException
或ConstraintViolationException
,并返回状态代码400。。。等等
我的问题是ExceptionMapper
每次只允许我选择一种异常;所以我不能对所有的错误400使用同一个类,而对其他形式的错误404使用同一个类
有没有办法创建一个映射两种不同类型异常的ExceptionMapper
我的另一个选择是更改我的函数以返回响应而不是字符串(标记为@Produces("application/json"));
),然后每次设置状态代码;但我认为这是最糟糕的
# 1 楼答案
您可以针对异常超类(即
java.lang.Exception
)编写一个ExceptionMapper,然后根据特定的异常类提供不同的行为,例如:但在我看来,这并不像为每种类型的异常编写单独的映射程序那样干净。一方面,这个映射器将捕获所有异常,另一方面,随着时间的推移,这个类可能会扩展到难以处理的维度。也许这是代码风格的问题