Assertion 이란?
Assertion? Programmer 자신이 전개하고 있는 Code 내용에서 Programmer가 생각하고 있는 움직임과 그리고 특정 지점에서의 Program상의 설정 값들이 일치하고 있는지를 검사할 수 있도록 하는 것이 바로 Assertion이다. 예로 어느 특정 method의 Arguement 값은 10이상이어야 한다는 Programmer의 확고함이 있다고 하자! 이럴 때 Assertion을 사용하여 Programmer가 주장하는 확고함을 조건으로 명시하고 그 조건을 만족할 때만 Code가 실행할 수 있도록 하는 것이 Assertion이다. (Assertion이 조건을 만족하여 실행이되면 프로그램이 중단된다)
Assertion과 exception(Exception)의 차이점은?
Exception은 특정한 Code에서 exception가 발생하므로 일어나는 비 정상적인 Program 종료와 같은 1차적인 손실을 막고 exception에 대한 처리로 인해 Program의 신뢰성을 높이는 것. 하지만 Assertion은 어떤 결과를 위해 특정 Code나 변수의 값을 Programmer가 예상하는 값이어야 하는 것을 검증하는 것에 차이가 있다.
Assertion의 문법은 다음 두 가지로 나눈다.
1번 째
assert [boolean식];
2번 째
assert [boolean식] : [표현식];
Assertion 간단한 예문
assert var>10;
assert var<10 : “10보다 작은 값이어야 함!”;
assert str.equals(“”);
assert !str.equals(“”);
assert str != null : “str에 null값이 들어오면 안됨!”;
Assertion 컴파일 및 실행 법
Java Compiler는 ‘Assertion’기능을 수행하지 않으면서 Compile을 하게 되어 있다. 그러므로 Compiler에게 ‘Assertion’기능을 부여하면서 Compile을 수행하도록 하기 위해서는 다음과 같은 옵션을 주어야 한다.
java –source 1.5 [File name]
실행 할 때도 마찬가지로 다음과 같이 옵션을 주면서 실행해야 한다.
java –ea [class name]
-ea : Enable Assertions라고 해서 Assertion기능을 사용 가능하게 하는 Option이다.
-da : Disable Assertions라고 해서 ea의 반대 Option이다.
Assertion 예제
public class AssertTest1 {
public static void main(String[] args) {
assert args.length > 0 : "시작시 인자값이 없습니다.";
System.out.println(args[0]);
}
}
[Assertion이 Case문과 함께 쓰이는 경우]
switch (direction) {
case LEFT:
doLeft();
break;
case RIGHT:
doRight();
break;
default:
assert false;
}
출처 : http://zion437.tistory.com/128
'Java > The Java Language' 카테고리의 다른 글
What is Enum in Java (1) | 2013.02.06 |
---|---|
Static and Nostatic Initializer blocks (0) | 2013.02.06 |
Java stack trace with line numbers (0) | 2013.02.06 |
JVM Architecture (0) | 2013.02.06 |
JAR file (0) | 2013.02.06 |