Assertion

Java/The Java Language 2013. 2. 6. 15:48

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
Posted by Steven J.S Min
,