我是杰克逊的新手,我已经编写了这段代码,而且我的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);
}
}
答案 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。