import java.net.*;
import java.io.*;
public class UrlTest
{
public static void main(String[] arg)
{
try
{
URL ur=new URL("http://www.pzhu.edu.cn:80/");
}
catch(MalformedURLException e)
{
System.out.print(e.getMessage());
}
System.out.print("after catch\nhost="+ur.getHost());
System.out.println(ur.getRef());
System.out.println(ur.getHost());
System.out.println(ur.getProtocol());
System.out.println(ur.getPort());
}
}
C:\Documents and Settings\Administrator\桌面\MyProjects\UrlTest.java:25: 找不到符号
符号: 变量 ur
位置: 类 UrlTest
System.out.print("after catch\nhost="+ur.getHost());
ur已经声明并创建了怎么会找呢?不到有哪位高手指点一下。
^
public static void main(String[] arg) {
URL ur = null;
try {
ur = new URL("http://www.pzhu.edu.cn:80/");
} catch (MalformedURLException e) {
System.out.print(e.getMessage()); }
System.out.print("after catch\nhost=" + ur.getHost());
System.out.println(ur.getRef());
System.out.println(ur.getHost());
System.out.println(ur.getProtocol());
System.out.println(ur.getPort()); }
}声明在try里面是不行的,因为try的作用域无法影响到catch
设想,如果在声明前有程序代码,在前面就出错了呢,那时ur还没声明。
解决方法:
在try、catch块外面申明:
URL url = null;
然后在try中写url = new URL(".......");
public static void main(String[] arg)
{
URL ur=null;
try
{
ur=new URL("http://www.pzhu.edu.cn:80/");
}
catch(MalformedURLException e)
{
System.out.print(e.getMessage());
}
System.out.print("after catch\nhost="+ur.getHost());
System.out.println(ur.getRef());
System.out.println(ur.getHost());
System.out.println(ur.getProtocol());
System.out.println(ur.getPort());
}