2012-03-25 47 views
1

我有一个java servlet,并写了一个方法,让客户知道服务器遇到给定的输入错误。错误捕捉,我可以中断并停止进程吗?

客户端然后调用一个名为handleErrors()

我想要做的就是这个方法停止已发送请求到服务器的过程方法。线程中断会在这里使用还是他们处理类似错误的更好的做法?

这里是一个短的概述:

服务器:

期望的格式像这样的字符串: “AB££” - 2个字符,2个符号

客户:

发送:badMethod()发送“££££”

服务器:

返回: “错误”

客户:

VC + +实现的错误和运行handleErrorMethod(),这将()完全停止badMethod。

我希望这是一个明确的问题,而不是一个骗局。

TIA

+0

当发送错误信息时,服务器端方法肯定已停止?为什么客户需要调用另一种方法来阻止它呢? – davidfrancis 2012-03-25 19:45:43

+0

是的,服务器已经完成了它的工作,但是这个方法正在等待一个特定的返回,如果它没有返回就会导致错误。我有很多这样的方法,我想要一种方法来阻止任何正在调用handleErrorMethod()的方法。 – 2012-03-25 19:48:16

+0

让'badMethod'在一个单独的线程中做它的东西,在一个全局(静态)集合中保留对这个线程的引用,然后'handleErrorMethod'可以从集合中抓取一组要中断的线程。 – Diego 2012-03-25 20:16:10

回答

0

在RESTful服务,典型的流程会涉及到服务器中的400范围内返回一个HTTP错误状态(422可能是一个不错的选择在这里),您有哪些客户应检查并作出相应的反应。您在消息有效负载中使用“错误”应该仍然有效,但您可能会考虑一些现有标准。但是,一旦客户端做出回应,服务器就不在环路中,所有的编程都是客户端本地的。所以,如果客户端也是用Java写的(我讨厌假设),那么你可以使用任何数量的技术。 @EJP给客户端的handleErrors()引发异常的建议看起来像是一个简单而优雅的解决方案。您的调用方法badMethod()将被中断,并且可能会捕获该异常或将该异常冒泡给其调用者。