解析器中的Java异常处理

时间:2014-10-07 17:22:59

标签: java parsing exception-handling

假设我们有一个简单的解析器:

public class ResourceManager {

    private final static Logger LOG = Logger.getLogger(ResourceManager.class);

    public Museum parseJSONFile(String filePath) /*throws IOException ???? */ {
        Museum museum = null;
        try {
            ObjectMapper objectMapper = new ObjectMapper();

            museum = objectMapper.readValue(new File(filePath), Museum.class);
        } catch(IOException e) {
            LOG.error(e);
        }
        return museum;
    }
}

是否应该在方法或调用代码中捕获异常?哪种变体更好?

1 个答案:

答案 0 :(得分:8)

Parser无法对异常做任何事情,因此对于解析器来说这是一种特殊情况,它无法产生任何可预期的结果。外面的人应该处理它。

特别是,它不应该返回null,因为它会导致调用代码中的大量空值检查(您很容易忘记放置,或者由于缺少有关您的实现的文档,我只是#39;知道我是否必须在没有看到代码的情况下检查null。这是Java中的异常旨在解决的问题之一。通过在方法签名中声明检查异常,您可以强制解析器的用户处理可能不会出现值的事实。