在Java的Jersey框架中,處理異常情況通常是通過使用異常映射器(ExceptionMapper)來實現的。異常映射器是一個實現了javax.ws.rs.ext.ExceptionMapper
接口的類,它可以將特定類型的異常轉換為相應的HTTP響應。
下面是一個簡單的示例,展示了如何創建一個自定義的異常映射器來處理MyCustomException
異常:
MyCustomException
:public class MyCustomException extends RuntimeException {
public MyCustomException(String message) {
super(message);
}
}
ExceptionMapper<MyCustomException>
接口的異常映射器類:import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class MyCustomExceptionMapper implements ExceptionMapper<MyCustomException> {
@Override
public Response toResponse(MyCustomException exception) {
// 創建一個錯誤消息對象
ErrorMessage errorMessage = new ErrorMessage(exception.getMessage(), 400, "https://example.com/error-codes/my-custom-exception");
// 返回一個包含錯誤消息的HTTP 400 Bad Request響應
return Response.status(Response.Status.BAD_REQUEST)
.entity(errorMessage)
.build();
}
}
ResourceConfig
或Application
類中添加以下代碼:register(MyCustomExceptionMapper.class);
現在,當你的應用程序中拋出MyCustomException
異常時,Jersey會自動使用MyCustomExceptionMapper
將其轉換為一個HTTP 400 Bad Request響應。
你可以根據需要創建更多的異常映射器來處理不同類型的異常。只需確保為每個異常映射器添加@Provider
注解,并在ResourceConfig
或Application
類中注冊它們。