2013-06-18 4 views
0

우리가 줄에서 예외를 처리해야하는 이유예외를 throw하지 않는 메소드에 예외를 처리해야하는 이유는 무엇입니까?

public class ToBeTestHandleException{ 

static class A { 
    void process() throws Exception { 
     throw new Exception(); 
    } 
    } 

static class B extends A { 
    void process() { 
     System.out.println("B "); 
    } 
    } 



public static void main(String[] args) { 
    A a = new B(); 
    a.process(); 
    } 

    } 

을 감안할 때 (a.process())? 클래스 B의 국지적 인 방법 프로세스가 예외를 전혀 포기하지 않는다? 추신 : 이것은 SCJP 문제입니다.

답변

3

B 인스턴스에 A 유형의 변수를 지정했습니다. A.process()이 예외를 던지기 때문에 코드가 그 가능성을 처리해야합니다. 다시 answer.It의 절대적으로 올바른 스럽다고에 대한

public void doSomething(A a) { 
    a.process; // <--- we don't know this is a B, so you are forced to 
      //  catch the exception 
} 
+0

장하다 던컨 Jones.Thank 대단히 :

하면 A의를 받아들이는 다른 방법으로 인스턴스를 전달 상상해보십시오. – BenMansourNizar

관련 문제