2015-04-23 58 views
-1

我在這裏有一些錯誤。我無法完全弄清楚。 嗯。Overriden方法不會丟失

class myException extends Exception { 

    interface MyInterface { 
     void myMethod() throws myException; 
    } 

    class MyImplementation implements MyInterface { 

     @Override 
     public void myMethod() throws MyException { 
      System.out.println("in myMethod()"); 
      throw new MyException(); 
     } 
    } 

    class TheInterface { } 

    public static void main(String[] args) { 
     MyImplementation m; 
     m = new MyImplementation(); 
     try { 
      m.myMethod(); 
     } catch (MyException e) { 
      System.out.println("MyException caught"); 
     } 
    } 
} 

請幫忙。

+0

你得到什麼錯誤?它是編譯器錯誤,運行時錯誤還是邏輯錯誤?如果這是編譯器錯誤,那麼消息是什麼?如果是運行時錯誤,那麼堆棧跟蹤是什麼?如果這是一個邏輯錯誤,你期望發生什麼,實際發生了什麼?最重要的是,你已經試圖解決你遇到的問題了嗎? – Jeffrey

+0

將錯誤添加到問題中。這將有助於解決您的問題! – Ajoy

回答

0

我想你有錯字。

interface MyInterface { 
    void myMethod() throws myException; // Change it to MyException 
} 

另外,還要確保你右括號正確

class myException extends Exception {} 
0

嘗試,因爲:

class myException extends Exception {} 

interface MyInterface { 
void myMethod() throws myException; 
} 

class MyImplementation 
implements MyInterface { 

@Override 
public void myMethod() throws myException { 
    System.out.println("in myMethod()"); 
    throw new myException(); 
} 
} 

public class TheInterface { 
public static void main(String[] args) { 
MyImplementation m; 
m = new MyImplementation(); 
try { 
m.myMethod(); 
} catch (myException e) { 
e.printStackTrace(); 
     System.out.println("MyException caught"); 
} 
} 
} 
1

您正在使用用戶定義的異常,並沒有創建。試試這個或使用通用例外

public class MyImplementation implements MyInterface { 

    @Override 
    public void myMethod() throws MyException { 
     System.out.println("in myMethod()"); 
     throw new MyException(); 
    } 

} 

interface MyInterface { 
    void myMethod() throws MyException; 
} 

public class MyException extends Exception { 

} 

public class TestThrowsException { 

    public static void main(String[] args) { 
     MyImplementation m = new MyImplementation(); 
     try { 
      m.myMethod(); 
     } 
     catch (MyException e) { 
      System.out.println("MyException caught"); 
     } 
    } 
} 

通過測試的方式: -

public class TestThrowsException { 
    @Test(expected = MyException.class) 
    public void shoudldThrowException() throws MyException { 
     MyImplementation m = new MyImplementation(); 
     m.myMethod(); 
    } 
}