找不到符号错误

时间:2011-02-09 23:39:25

标签: java scope

首先让我道歉。我已经编写了很长时间了,但我是Java的新手。我觉得这应该是一个简单的错误,但我一直在努力工作半小时无济于事:

public String getHtml(HttpServletRequest request) {
    try {
        WebPageFetcher fetcher = new WebPageFetcher("http://google.com");
    } catch (Exception e) {
        log.error("WebPageFetcher failed ...");
    }

    return "<div id=\"header\">" + fetcher.getPageContent() + "</div>";
}

实现WebPageFetcher的位置如下所示: http://www.javapractices.com/topic/TopicAction.do?Id=147

我收到了一个错误:

cannot find symbol
symbol  : variable fetcher
location: class myclass

我做错了什么?

3 个答案:

答案 0 :(得分:5)

fetcher仅在声明它的块中可见,即try块。尝试在块之前声明,以便在整个方法中可见:

WebPageFetcher fetcher = null;
try {
    fetcher = new WebPageFetcher("http://google.com");
}

答案 1 :(得分:1)

在返回时,变量fetcher超出范围。

尝试:

public String getHtml(HttpServletRequest request) {
    try {
         WebPageFetcher fetcher = new WebPageFetcher("http://google.com");
         // return within scope
         return "<div id=\"header\">" + fetcher.getPageContent() + "</div>";
    } catch (Exception e) {
        log.error("WebPageFetcher failed ...");
    }
     return /*something that make sense*/ "<html>500</html>";
}

答案 2 :(得分:1)

变量fetcher的生命周期仅在最封闭的范围内,即围绕它的最嵌套的大括号({ })。因此,当您到达尝试使用它的return语句时,它就不再存在。