Java 找不到符号错误
让我先道歉。我已经编写代码很长时间了,但我对Java还是新手。我觉得这应该是一个简单的错误,但我已经为此工作了半个小时,但毫无结果:Java 找不到符号错误,java,scope,Java,Scope,让我先道歉。我已经编写代码很长时间了,但我对Java还是新手。我觉得这应该是一个简单的错误,但我已经为此工作了半个小时,但毫无结果: public String getHtml(HttpServletRequest request) { try { WebPageFetcher fetcher = new WebPageFetcher("http://google.com"); } catch (Exception e) { log.error("
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>";
}
我做错了什么?抓取器仅在声明它的块try块中可见。尝试在块之前声明,使其在整个方法中可见:
WebPageFetcher fetcher = null;
try {
fetcher = new WebPageFetcher("http://google.com");
}
返回时,变量
fetcher
超出范围
尝试:
publicstringgethtml(HttpServletRequest){
试一试{
WebPageFetcher fetcher=新的WebPageFetcher(“http://google.com");
//范围内返回
返回“+fetcher.getPageContent()+”;
}捕获(例外e){
log.error(“WebPageFetcher失败…”);
}
返回/*有意义的东西*/“500”;
}
变量fetcher
的生存期仅在最封闭的范围内,即它周围最嵌套的一对大括号({}
)。因此,当您到达要使用它的return
语句时,它就不再存在了。如果这样做,您肯定需要添加一个If语句来检查fetcher
在try catch之外是否为null。另一种方法是在try块中移动return语句,并在引发异常时执行一些操作(例如rethrow异常、returnnull等)Yes。谢谢你的改进!同样,如果你承认可能发生异常,那么这是一个NPE等待发生…是的,我几乎只担心范围,但返回应该在try/catch中。。。编辑。。。
WebPageFetcher fetcher = null;
try {
fetcher = new WebPageFetcher("http://google.com");
}
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>";
}