Java - проблема с исключением try-catch внутри пользовательского исключения - PullRequest
0 голосов
/ 16 января 2019

У меня есть собственный класс исключений 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) исключения внутри пользовательских исключений?
Любая идея, где я иду не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...