2013-03-24 37 views
0

我有以下代码:Java反射 - 错误掷

class ClassDetails { 
    private String current_class; 
    public ClassDetails(String current_class) { 
    this.current_class = current_class; 
    } 
    public void getClassDetails() throws ClassNotFoundException { 
    try { 
     Class theClass = Class.forName(current_class); 
     String name = theClass.getName() ; 
     System.out.println(name); 
    } catch (ClassNotFoundException e) { 
     System.out.println(e.getMessage()); 
    } 
    } 
} 

class MMain { 
    public static void main(String[] args) { 
     ClassDetails C = new ClassDetails(args[0]); 
     C.getClassDetails(); 
    } 
} 

而且我有这个错误主要:

Unhandled exception type ClassNotFoundException 

我该如何解决这个问题?

+0

那么运行时的代码......不幸的是,我们不知道你运行你怎么可能已经提供了错误的名称,或者你正在尝试加载的课程,很难提供更多建议...... – 2013-03-24 13:04:35

+0

我没有运行它。我不能因为我有这个错误。 – sticksu 2013-03-24 13:05:50

+0

@JonSkeet这是一个编译时错误,请参阅我的文章。 – MrLore 2013-03-24 13:06:07

回答

2

main方法调用getClassDetails()方法,它抛出异常,作为签名显示:

public void getClassDetails() throws ClassNotFoundException 

而且你不抓住它,或在该方法中抛出,所以你的代码不会编译。所以,您必须做到:

public static void main(String[] args) throws ClassNotFoundException { 
    ClassDetails C = new ClassDetails(args[0]); 
    C.getClassDetails(); 
} 

或者:

public static void main(String[] args) { 
    ClassDetails C = new ClassDetails(args[0]); 
     try 
     { 
      C.getClassDetails(); 
     } 
     catch(ClassNotFoundException ex) 
     { 
      //Add exception handling here 
     } 
} 
+2

或者,或者,由于方法*捕捉异常,请从throws子句中删除它。 – 2013-03-24 13:07:01