2016-02-22 25 views
0

這個程序對異常處理,但問題點是UserException ????Eclipse的Java異常例如

import org.omg.CORBA.UserException; 

    public class Ch9_3_3 { 

    class UserException extends Exception { 
     int data; 
     public UserException(int d) { data = d; } 
     public String getMessage() { 
      return ("Error! You negotiate too much for auction price: " + data); 
     } 
    } 

    public static void main(String[] args) { 
     try { 
      for (int i = 0; i < 5; i++) { 
       if (i==3) throw new UserException(3); 
       System.out.println("No. of auction: " + i); 
      } 
     } 
     catch (UserException ex) { 
      System.out.println("Exception note: " + ex.getMessage()); 
      System.out.println("Exception reason: "); 
      ex.printStackTrace(); 
      return; 
     } 
     finally { System.out.println("Error handling completed."); } 
     System.out.println("End of program!"); 
    } 

} 

隨着錯誤消息: 異常在線程「主要」 java.lang.Error的:未解決的問題,編譯: 型Ch9_3_3沒有外圍實例訪問。必須用類型Ch9_3_3的包封實例限定分配(例如x.new A(),其中x是Ch9_3_3的一個實例)。 在Ch9_3_3.main(Ch9_3_3.java:16)

注:16號線是try {

回答

0

下面有

if (i==3) throw new UserException(3); 

不能創建一個實例代碼中的編譯錯誤像這樣的內部類。 相反,你可以

使內部類是靜態的。因爲你從主類中調用它。

public static class UserException extends Exception 

,或者可以使對象如下

if (i==3) throw new Ch9_3_3().new UserException(3); 
+0

程序現在可以運行,但它是奇怪的,結果如下。處理完成 錯誤: _Exception原因。 Ch9_3_3 $ UserException:錯誤!您洽談太多的拍賣價:3 \t在Ch9_3_3.main(Ch9_3_3.java:16)_ – Snowman

+0

這就是你的程序是什麼。有什麼奇怪的呢? –