2015-04-06 102 views
0

我發佈到端點並傳遞Json。處理請求引發JsonParseException

@POST("/start") 
    @PermitAll 
    public String Connect(Map form) 
    { 
     String stack_callback; 
     String wfid; 
     String ch_id; 
     try { 
      elem1 = form.get("elem1").toString(); 
      elem2 = form.get("elem2").toString(); 
      elem3 = form.get("elem3").toString(); 
      elem4 = form.get("elem4").toString(); 
     } catch (NullPointerException e) { 
      return "error"; 
     } 

     ThreadStart threadStart = new ThreadStart(elem1, elem2, elem3, elem4); 

     new Thread(threadStart).start(); 
     return "Start the thread"; 
    } 

現在,如果我發送POST例如,

{ 
    "elem1": "val1", 
    "elem2": "val2", 
    "elem3": , 
    "elem4": "val4" 
} 

我如何處理這個異常:沒有值(如以下),我得到「request raised JsonParseException」的關鍵?

回答

0

如果您使用的是Java 7或更高版本:

catch (NullPointerException | JsonParseException e) { 
    // log e, handle the exception 
} 

如果您使用的是Java 6或更早版本:

catch (NullPointerException e) { 
    // log e, handle null pointer 
} catch (JsonParseException e) { 
    // log e, handle key with no value 
} 

你也可以有Connect方法throw一個JsonParseException

public String Connect(Map form) throws JsonParseException { 
    // ... 
} 

Connect似乎成爲來自Web框架的POST請求的入口點。無論誰打電話給Connect可能都不適合處理解析JSON的問題,所以你可能會想要在你的代碼中捕獲異常。