首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在try/catch块中重新实例化变量

如何在try/catch块中重新实例化变量
EN

Stack Overflow用户
提问于 2020-09-02 22:51:40
回答 1查看 50关注 0票数 0

我正在做一个Cucumber测试,我有以下几点:

代码语言:javascript
运行
复制
        ResponseEntity<OrderGet> createResponse;
        try {
            createResponse = api.createAddress(headers, address);
        } catch (FeignException e) {
            System.out.println(e.status());
            scenarioContext.put("createResponseValidationCode", e.status());
            scenarioContext.put("createResponseValidation", createResponse);
        }

在最后一行,我得到了Intellij的错误,说createResponse可能还没有初始化。当我用null初始化它并添加一个if ( .. != null)时,它永远不会执行它,它仍然是空的,也不会重新实例化该变量。try块中的行总是抛出异常。我应该在这里使用什么方法?

EN

回答 1

Stack Overflow用户

发布于 2020-09-02 22:55:29

也许您不理解这段代码是如何工作的。

如果catch块执行,则,这意味着try块没有执行(或者最多执行了部分)。

具体地说,如果catch块最终被涉及,这意味着到目前为止,try块的所有语句中有1到n已经被执行,并且执行的最后一个语句(必须是try块中的最后一个语句!)未成功完成。

假设try块中只有一个invoke (调用createAddress方法),那就是不能在中工作的那个invoke。

换句话说,首先没有响应对象!-因此,不可能发送不存在的响应。您没有ResponseEntity的实例。完全没有。代码在我们走到这一步之前失败了。

如果你这样做了:

ResponseEntity<OrderGet> createResponse = null;

..。显然,在catch块中,createResponse将始终保持为null,其中的if (x != null)事务将意味着它永远不会触发。

简单地说:就像这样,你让面包师烤一些面包。

然后面包师告诉你:哦,开枪,伙计。我没钱了,抱歉。然后你去:这没问题。只要把面包给我,我就会告诉让我给他们买面包的客户,这个面包不能烤。这时面包师说:你说什么,伙计?,我没有面包!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63708114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档