java中的自定义异常:'找不到符号'如果没有明确导入

时间:2014-06-22 17:17:52

标签: java exception compiler-errors

我试图在java中捕获一个Exception,但是当捕获Exception时出现cannot find symbol错误。错误发生在catch (ItemNotFoundException infe),编译器抱怨ItemNotFoundException不是已知的类(符号)。请注意ItemNotFoundException是班级FeedController的成员。

引发错误的类:

public class WebResource {
    public Entry getEntry() {
        String id = "490d6c15";
        try {
            Entry entry = FeedController.getInstance().getEntry(id);
        } catch (ItemNotFoundException infe) {
            return null;
        }
        return FeedController.getInstance().getEntry("490d6c15");
    }
}

FeedController类,它抛出异常:

public class FeedController {
    public Entry getEntry(String id) throws ItemNotFoundException {
        if(!index.containsKey(id)) throw new ItemNotFoundException(id);
        return index.get(id);
    }
    public static class ItemNotFoundException extends Exception {
        public ItemNotFoundException(String id) {
            super(String.format("item with id %s does not exist", id));
        }
    }
}

我还试图无情地导入FeedRtroller导入的WebResource中的所有内容,以消除丢失的导入。

2 个答案:

答案 0 :(得分:0)

无情地导入由抛出此异常的类导入的所有内容可能无法为您提供包含该异常的包。找到异常的完全限定名称; 应该在你正在调用的方法的javadoc中。

答案 1 :(得分:0)

好的,事实证明我必须从类中显式导入自定义异常,即:

import feedviewer.controller.FeedController.ItemNotFoundException;

否则编译器不知道在哪里找到异常。

请注意,使用catch (FeedController.ItemNotFoundException e)无效。您必须使用实际的例外,这就是您必须手动导入它的原因。