如何处理JsonMappingException尝试catch

时间:2014-06-26 11:03:36

标签: java json jackson try-catch

我是杰克逊的新手,我已经编写了这段代码,而且我的ide在catch块中说 我不明白这一点。我加了jar。

     incompatible types
     required:java.lang.Throwable
     found :org.codehaus.jackson.map.JsonMappingException

这是方法

  private void jacksonTest()   {
    try {
        org.codehaus.jackson.map.ObjectMapper mapper = new org.codehaus.jackson.map.ObjectMapper();
            mapper.writeValue(new File("c:\\user.json"), someObj);

    } catch (IOException ex) {
        Logger.getLogger(GR_XX.class.getName()).log(Level.SEVERE, null, ex);
    } catch (JsonMappingException ex) {
//     incompatible types
//             required:java.lang.Throwable
//            found :org.codehaus.jackson.map.JsonMappingException


    } catch (Exception ex) {
        Logger.getLogger(GR_XX.class.getName()).log(Level.SEVERE, null, ex);
    } catch (Throwable ex) {
        Logger.getLogger(GR_XX.class.getName()).log(Level.SEVERE, null, ex);
    } 
}

3 个答案:

答案 0 :(得分:0)

正如您在documentation of JsonMappingException中所看到的,它是IOException的子类。这意味着您的第一个catch已经处理了JsonMappingException。如果你想单独处理它,你必须在IOException之前抓住它。

答案 1 :(得分:0)

在多个捕获异常的情况下,层次结构付诸行动

尝试这样的事情:

try {
           ObjectMapper mapper = new ObjectMapper();
           mapper.writeValue(new File("c:\\user.json"), someObj.class);

       }

       catch (JsonMappingException ex) {  }
       catch (IOException ex) {}
       catch (Exception ex) {}
       catch (Throwable ex) {}

答案 2 :(得分:0)

我从stackoverflow.com/a/14920842/2194456

得到了答案

我有同样的问题。似乎JsonMappingException类继承的类不在JAR文件中。我刚刚恢复到没有问题的版本1.9。