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已经声明并创建了怎么会找呢?不到有哪位高手指点一下。
                                              ^

解决方案 »

  1.   

    import java.net.*;public class UrlTest {
    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还没声明。
      

  2.   


    解决方法:
    在try、catch块外面申明:
    URL url = null;
    然后在try中写url = new URL(".......");
      

  3.   


    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());
            
        }