2010-12-09 112 views
1

我得到下面的編譯錯誤:泛型類方法的forName

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

啊,你會喜歡檢查異常。 – 2010-12-09 04:13:42

+1

讓自己成爲一個好的IDE,他們會爲你解決這樣的問題,比你自己輸入的時間快。 – CurtainDog 2010-12-09 04:25:59

回答

0

當您使用Class.forName()時,您需要捕獲或拋出在類路徑中找不到該類時發生的異常。

這裏的拋出異常(因爲這是不可能的String不會被發現)

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



} 

如果要爲一類,可能無法在類路徑中這樣做,你應該環繞調用的例子與try...catch塊。

+0

問題是類應該在類路徑>,>上找到。字符串是一個已知的類 – Jake 2010-12-09 04:14:54

3

這既奇怪又有些模糊。是因爲拋出的forName它必須趕上ClassNotFoundException的還是讓它泡了堆棧...

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 */ } 
    } 
} 

這是所有真正檢查的異常。