2012-06-21 20 views
0

Eclipse的抱怨我下面Java中,自定義異常不是由Eclipse的接受

public class NaturalLanguageMultiply 
{ 
    public class WrongMultiplierException extends Exception 
    { 

    } 

    private static int toInt(String number) throws WrongMultiplierException 
    { 
     // removed for clarity 
       try 
       { 
        String numberKey = scanner.next(); 
        if (numberMap.containsKey(numberKey)) 
        { 
         multiplier += (Integer) numberMap.get(numberKey); 
        } 
        else 
        { 
         throw new WrongMultiplierException(); 
        } 
       } 

它抱怨以下搭上線catch聲明:

Syntax error on tokens 

       catch (WrongMultiplierException); 
       { 

       } 
      } 

而且,爲什麼StackOverflow上不停的問:您的帖子沒有太多的上下文來解釋代碼段;請更清楚地解釋你的情況。我在常見問題或幫助中找不到答案。

+1

以及它應該;額外';' –

+0

所以抱怨,因爲你有大量的代碼,幾乎沒有文字,部分原因是你格式化*一切*,沒有什麼突出的是你自己的文字。 –

+0

當我刪除分號時,它會發出「變量 –

回答

6
catch (WrongMultiplierException); 
{ 
} 

catch (WrongMultiplierException wme) 
{ 
} 
+0

當我添加了wme時,它上面的throw語句抱怨說:「沒有可以訪問NaturalLanguageMultiply類型的封閉實例,必須用NaturalLanguageMultiply類型的封閉實例來限定分配(egxnew A(),其中x是NaturalLanguageMultiply的一個實例) 「。 –

+0

我已閱讀完整的http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html我還閱讀了Head First Java中的相應章節我也閱讀了許多關於此站點的帖子和問題I已經在網上搜索,都無濟於事。 –

+0

你可能是因爲你在另一個類中定義了一個類。現在你正在嘗試引用它,它沒有樂趣。最簡單的解決方案是將內部類發佈到自己的文件並從那裏開始。 – Vetsin

1

你有一個;在catch的右括號之後,這是一個語法錯誤。

+0

我試過,但它然後抱怨「Variable Declarator Id預計」 –

+0

我已閱讀整個http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html我也讀過適當的章節頭第一個Java我也讀了很多關於這個網站的帖子和問題,我在網上搜索過,都無濟於事。 –

1

在此行catch (WrongMultiplierException);必須添加例外參考名稱,並刪除;。正確版本:catch (WrongMultiplierException ex)

+0

當我添加ex時,它上面的throw語句抱怨說:「不能使用NaturalLanguageMultiply類型的封閉實例,必須用NaturalLanguageMultiply類型的封閉實例來限定分配(egxnew A(),其中x是NaturalLanguageMultiply的一個實例) 「。 –

+0

我已閱讀完整的http://docs.oracle.com/javase/tutorial/essential/exceptions/index。html我還閱讀了Head First Java中的相應章節我也閱讀了許多關於本網站上的帖子和問題,我已經在網上搜索所有都無濟於事。 –