日期:2014-05-20  浏览次数:20865 次

Class.forName 出错
eclipse的环境,写了个关于Class.forName很简单的代码,纠结了很久。下面是代码:
 
Java code

package a;

import java.lang.*;

class b{
    static {
        System.out.println("this is b");
    }
}

public class aa {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Class.forName("b"); //a.b也不行    }

}
   


错误信息:Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Unhandled exception type ClassNotFoundException



------解决方案--------------------
异常未处理,可以在main()后面加上 throws ClassNotFoundException 或用 try catch 处理。
------解决方案--------------------
代码:Class.forName("a.b")会抛出ClassNotFoundException异常,程序要对其进行捕获,或抛给上一级调用者。

Java code

  public static void main(String[] args) {
        // TODO Auto-generated method stub
    try
    {
        Class.forName("a.b"); //a.b也不行  
    }
    catch(ClassNotFoundException e)
    {
        e.printStackTrace();
    }
    }

------解决方案--------------------
探讨

谢谢各位,加了try,catch后可以了。
但是这里又产生了一个疑问,为什么加了try之后就可以了呢。

------解决方案--------------------
会抛出异常的方法调用时必须遵守两个原则:要么在调用此方法的方法中声明会抛出某异常,要么使用try/catch来处理异常。

探讨
谢谢各位,加了try,catch后可以了。
但是这里又产生了一个疑问,为什么加了try之后就可以了呢。