2014-09-11 2 views
0

저는 자바로 단정 지어보고 있습니다. 이제 이클립스에서 어설 션이 사실이라면 어떻게 메시지를 볼 수 있는지 알아 내려고합니다. 아래 코드 :자바 - 이클립스에서 어설 션 메시지를 보는 방법

public class TheAssertClass { 

    public TheAssertClass(){ 

     int y = 5; 
     int x = 4; 

     assert (y > x): "y is too big. y = " + y; 
    } 

    public static void main(String[] args){ 
     TheAssertClass go = new TheAssertClass(); 

     System.out.println("The program ran"); 
    } 

} 

콘솔에는 "프로그램 실행"이 표시됩니다. 올바르게 사용하고 있는지 확실하지 않습니다.

감사합니다.

+0

사실 일 것으로 추정되는 사항을 주장해야합니다. 여기에'y

+0

그러나 y는 x (y> x)보다 크지 않으므로 true입니까? – jonprasetyo

+0

예,'y> x'는 true입니다. 당신은 * 그'y> x'를 주장합니다. 사실,'assert' 문장은 "이것이 사실이 아니면 내 프로그램을 끝내라"고 말한다. –

답변

2

JVM 레벨 (-ea 스위치 사용)에서 어설 션을 활성화하지 않았을 수 있습니다. 그렇지 않다면, 이것은 당신이보고있는 행동을 설명 할 것입니다. 어설 션을 false로 만들고 콘솔에 아무 것도 나타나는지 확인하십시오.

은 또한 다음과 같은 질문에 자세한 내용에 대한 & 답변을 살펴 있습니다 이 * 이클립스 주장을 활성화하는 방법에 What does the "assert" keyword do?

+0

감사합니다. 이클립스의 실행 설정에서 VM 인수 "-ea"를 활성화했는데 이제는 작동합니다. – jonprasetyo

+0

그러나 그것은 내가 옳다고 생각하는 예외 사항을 나타냅니다? (false를 반환하는 경우) – jonprasetyo

+0

아마도 ... 설명하겠습니다. 스택 추적을 제공하는 AssertionError (Throwable의 서브 클래스)를 던져야합니다. 예외는 Throwable의 서브 클래스이지만 오류의 형제입니다. Throwable의 모든 파생물에는 스택 추적이 포함될 수 있습니다. 그래서 당신이 스택 추적을보고 용의자가 예외라고 부르는 것 같습니다. 실제로 당신은 Assertion ** Error **를 가지고 있습니다. AssertionError가 있으면 올바른 것입니다. 만약 당신이 다른 예외를 가지고 있다면, 당신은 다른 일이 일어났습니다. 예외는 무엇입니까? 그래서 그것은 당신이 실제로 가지고있는 것에 달려 있습니다, 그러므로 '아마'! – roj

0

정보를 참조하십시오

Run -> Run Configuration -> Java Application -> Arguments (2nd tab) -> VM arguments -> -ea

-ea = 주장을 할 수 있습니다.