У меня есть собственный класс исключений Java, CustomRestException
:
import org.codehaus.jettison.json.JSONObject;
public class CustomRestException extends Exception{
private String httpStatusMessage;
private Integer httpStatusCode;
private String endpointBody;
private String callType;
private List<HashMap<String,String>> headerParams;
private List<HashMap<String,String>> queryParams;
private JSONObject endPointErrorResponse;
public CustomRestException (RestCallParameters p,String type,String url,String body,UniformInterfaceException ue) {
super(p.getCollectionErrMsg());
this.endpointBody= body;
this.endPointUrl = url;
this.callType = type;
setUniformInterfaceExceptionParameters(ue);
}
private void setUniformInterfaceExceptionParameters(UniformInterfaceException ue) {
try {
this.httpStatusMessage = ue.getMessage();
this.httpStatusMessage = ue.getResponse().getClientResponseStatus().toString();
this.httpStatusCode = ue.getResponse().getStatus();
this.endPointErrorResponse =
new JSONObject(ue.getResponse().getEntity(String.class));
}
catch (Exception ex) {
LOGGER.info("[setUniformInterfaceExceptionParameters] Ecnountered error ",ex);
}
}
}
Я выбрасываю это CustomRestException из метода:
public String myMethod() throws CustomRestException {
try{
//make some rest call here
}catch(UniformInterfaceException ue){
throw new CustomRestException (p,"POST",url,p.getReqBody(),ue);
}
}
тогда я ловлю это CustomRestException
где-то еще:
public Response myEndPointMethod(){
try{
//some code
myClassObj.myMethod(); //calling myMethod() above
//some code
} catch (CustomRestException e) {
LOGGER.error("(someMessage) CustomRestException ", e);
}
Моя проблема
this.endPointErrorResponse = new JSONObject(ue.getResponse().getEntity(String.class));
Если в этой строке выдается какое-либо исключение (пока я видел только JSONException
), программа завершает работу после выполнения этого регистратора в блоке catch:
LOGGER.info("[setUniformInterfaceExceptionParameters] Ecnountered error ",ex);
Мое ожидание
Должен быть вызван логгер LOGGER.error("(someMessage) CustomRestException ", e);
в myEndPointMethod()
.
Разве мы не должны обрабатывать (try-catch) исключения внутри пользовательских исключений?
Любая идея, где я иду не так?