Restlet,无法处理ConnectionException

时间:2015-05-12 15:44:11

标签: java restlet

我有以下代码:

private Job[] synchro(URI u)  {
        try{
            Client client = new Client(new Context(),Protocol.HTTP);
            Reference samplesUri = new Reference(u+"/synchrojobs/");

            ClientResource cr = new ClientResource(client.getContext(),Method.POST,samplesUri);
            cr.setChallengeResponse(ChallengeScheme.HTTP_BASIC, "xxx", "uxxx");
            Job[] back = persistence.all().toArray(new Job[persistence.all().size()]);
            for(Job trace : back){
                logger.debug(String.format("Sending synchro for %s status:%s time:%s",trace.getId().toString(),trace.getStatus(),trace.getLastStatusChangeDate().toString()));
            }
            Representation res = cr.post(new JacksonRepresentation<Job[]>(back));
            Job[] result = this.mapper.readValue(res.getStream(),Job[].class);
            cr.release();
            res.release();

            logger.info(String.format("Found %s jobs from %s",result.length,u));

            return result;
        }catch(Exception e){
            logger.error("Error synchronizing jobs:"+e.getMessage());
            return new Job[0];
        }
    }

如果另一方没有连接,会引发异常,但是我的阻止没有被捕获,它会在外部弹出,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

实际上,客户端连接器和包装器在restlet异常中直接抛出了这样的错误。

我做了一些测试,然后抛出了原因var result= db.allDocs({include_docs: true}); 的Restlet ResourceException。但是我可以使用try / catch(Exception)来捕获它。见下文:

java.net.ConnectException

也许您可以尝试使用try / catch(Throwable)来查看实际抛出的异常?

此外,你能给我们一个Restlet版本和你使用的客户端连接器吗?对于我的测试,我使用Restlet版本2.3.1 ...

希望它可以帮到你, 亨利

相关问题