找不到符号错误

Jef*_*amb 2 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>";
}
Run Code Online (Sandbox Code Playgroud)

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

我收到一个错误:

cannot find symbol
symbol  : variable fetcher
location: class myclass
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Hov*_*els 5

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

WebPageFetcher fetcher = null;
try {
    fetcher = new WebPageFetcher("http://google.com");
}
Run Code Online (Sandbox Code Playgroud)

  • 如果你这样做,你肯定需要添加一个if语句来检查try-catch之外的`fetcher`是否为null.另一种方法是在try块中移动return语句,并在引发异常时执行某些操作(例如重新抛出异常,返回null等) (3认同)