使用Jackson解析空JSON数组时报未处理异常错误如何解决?
错误原因
这个是Java语言的受检异常(Checked Exception)强制校验规则,和你输入的JSON内容是否合法无关:com.fasterxml.jackson.databind.ObjectMapper#readTree 方法定义时明确声明了会抛出 JsonProcessingException 受检异常,Java要求所有受检异常必须被显式捕获处理,或者在调用方法的签名上声明抛出,否则编译不通过。
修复方案
两种方案选一种即可:
方案1:在main方法上声明抛出异常
直接在main方法的签名后加 throws JsonProcessingException 即可,修改后的main.java代码如下:
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; class Main { static String tags = "[]"; public static void main(String[] args) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); JsonNode root; root = mapper.readTree(tags); } }
这个方案适合测试场景,异常会直接打印到控制台,不需要额外处理逻辑。
方案2:用try-catch捕获异常处理
如果需要自定义异常处理逻辑,可以用try-catch包裹调用代码:
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; class Main { static String tags = "[]"; public static void main(String[] args) { ObjectMapper mapper = new ObjectMapper(); JsonNode root; try { root = mapper.readTree(tags); // 后续正常逻辑 } catch (JsonProcessingException e) { // 自定义异常处理逻辑,比如打印错误日志 e.printStackTrace(); } } }
修改完代码后重新执行mvn package即可正常编译。
内容的提问来源于stack exchange,提问作者Samha'
相关产品推荐
相关产品推荐

