我收到以下编译错误:
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");
}
}
为什么会这样?
答案 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
块围绕调用。