通用类方法forName

时间:2010-12-09 04:08:59

标签: java

我收到以下编译错误:

Tester.java:10: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
                Class stringClass = Class.forName("java.lang.String");

使用此代码:

class Tester {
    public static void main(String [ ] args) {
        Class stringClass = Class.forName("java.lang.String");
    }
}

为什么会这样?

2 个答案:

答案 0 :(得分:3)

这既奇怪又有些模糊。是的,你必须捕获ClassNotFoundException,因为forName会抛出它或让它冒出堆栈......

class Tester{

    public static void main(String [ ] args) throws ClassNotFoundException
    {
        Class stringClass = Class.forName("java.lang.String");
    }
}

class Tester{

    public static void main(String [ ] args) 
    {
        try {
            Class stringClass = Class.forName("java.lang.String");
        }
        catch (ClassNotFoundException e) { /* do something with it here */ }
    }
}

对于所有已检查的例外情况都是如此。

答案 1 :(得分:0)

使用Class.forName()时,您需要捕获或抛出在类路径中找不到类时发生的异常。

以下是抛出异常的示例(因为String不太可能找不到)

public static void main(String [ ] args) throws ClassNotFoundException
{
  Class stringClass = Class.forName("java.lang.String");



}

如果您正在为可能不在类路径上的类执行此操作,则应使用try...catch块围绕调用。