2012-03-25 46 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()將被中斷,並且可能會捕獲該異常或將該異常冒泡給其調用者。