我正在做一个Cucumber测试,我有以下几点:
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块中的行总是抛出异常。我应该在这里使用什么方法?
发布于 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)事务将意味着它永远不会触发。
简单地说:就像这样,你让面包师烤一些面包。
然后面包师告诉你:哦,开枪,伙计。我没钱了,抱歉。然后你去:这没问题。只要把面包给我,我就会告诉让我给他们买面包的客户,这个面包不能烤。这时面包师说:你说什么,伙计?,我没有面包!
https://stackoverflow.com/questions/63708114
复制相似问题