繁体   English   中英

解析器中的Java异常处理

[英]Java exception handling in parsers

假设我们有这么简单的解析器:

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;
    }
}

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

解析器不能对异常执行任何操作,因此对于解析器来说这是一种特殊情况,并且它不会产生任何可预期的结果。 外面的人应该处理它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM