处理请求引发了JsonParseException

时间:2015-04-06 16:30:20

标签: java json exception

我发布到端点并在其中传递Json。

@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,例如一个没有价值的钥匙(如下),我得到了“request raised JsonParseException”:

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

如何处理此异常?

1 个答案:

答案 0 :(得分: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 a JsonParseException

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

Connect似乎是来自Web框架的POST请求的入口点。无论是谁调用Connect,都可能不适合处理解析JSON的问题,因此您可能希望在代码中捕获异常。