2015-04-23 59 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(); 
    } 
}