我正在使用下面的Java(Spring 2.0)代码从Web服务读取响应:
public ResponseEntity<?> getTemplate() {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<?> myResponse= restTemplate.postForEntity(
myUrl,
myRequestObj,
MyResponseObj.class);
return myResponse;
}
但是,如果myUrl Web服务返回HttpStatus。错误的_请求(400),未将其分配给myResponse并引发错误,因此没有ResponseBy,我需要将请求包装在try-catch块中。这是正确的还是有办法解决这个问题?此外,这是否意味着myUrl Web服务永远不应该故意(通过编程)将myResponseObj的HttpStatus设置为HttpStatus。错误的请求?因此,即使myRequestObj包含错误数据,myUrl Web服务仍应将响应状态设置为200的ie HttpStatus。没有内容。欢迎对如何正确执行此操作发表任何意见。
这是正确的还是有办法解决这个问题?
您描述的行为是由Spring的Detault错误处理程序定义的,它在400-499范围内的状态代码的情况下抛出一个HttpClientErrorExc0019
,在500-599范围内的状态代码的情况下抛出一个HttpServerErrorExc0019
,以及一个>如果状态代码未知,则为Unknown nHttpStatusCodeExcture
。要处理此类错误代码,您可以捕获异常或注册此处所述的自定义异常处理程序。
此外,这是否意味着myUrl Web服务永远不应该故意(通过编程)将myResponseObj的HttpStatus设置为HttpStatus。错误的请求?
根据RFC 7231,状态代码400用于指示服务器不能或不会处理请求,因为客户端在创建请求时出错(例如,格式错误的请求语法、无效的请求消息帧或欺骗性的请求路由)。因此,您可以自由使用该状态代码向客户指示此类行为。
前几天,我在我们的一个项目中看到一些代码,它们使用try-catch并重新抛出捕获的异常,如下所示: 除了catch块中的异常之外,没有做任何其他操作,所以我甚至不确定它为什么会被抛出。我看不出再次抛出同一个异常并对该异常不做任何处理有什么好处。 如果重新抛出catch块中捕获的异常,C#如何处理?它是否陷入了无限抛接球循环?还是说它最终会放弃试一试?
鉴于: 我想尝试,并重试,连接到服务器3次才放弃。 我可以把整个try/catch放在一个循环中,但是这是否符合Java的“最佳实践”。从我对该主题的回忆来看,这将是对语句的误用。再说一次,我可能完全错了。你怎么认为?
我不知道为什么try-catch语句不起作用: 这是代码,我只是想做InputMismatchException,以防有人输入无效的东西,如283479234729472983472984723或字符串等。 但是当我运行它时,我输入了这样的内容,它不让我用扫描仪再试一次,它只是跳到: 它没有给我进入另一个。
有可能在SWIFT中捕捉异常吗?给定以下代码: 有可能防止异常使整个程序崩溃吗?也就是说,在Objective-C中,与以下内容相对应的Swift等价是什么:
我有一个java gui应用程序,应该处理异常。这是我的程序的总体思想:它应该接受整数类型的输入。输入对话框应该引起一个异常,该异常应该被捕获并打印消息“坏数字”。但是,我的问题是,如果用户输入一个空字符串和/或错误的格式号,我怎么能得到重复的JPanelInput。此外,如果用户选择CANCEL选项,则跳出JOptionPane。 更新:
问题内容: 我有一个DAO类,其中包含许多方法,这些方法具有以下重复代码:- 我想重组该类,以便将尝试,捕获和最终放置在一个地方以避免重复。我将如何完成? 问题答案: 为ex创建一个接口。可执行文件: 将每个dao方法重构为: 创建以下方法在您的DAO中执行: