assert문을 사용한 Assertion(검증)은 주로 프로그램 흐름에서 코드가 정상적으로 처리되기 위해서 필요한 조건을 지정할 수 있게 해주고, 이를 위반할 시에 AssertionError를 발생시켜주는 기능이다. 이러한 검증 기능은 Java 1.4부터 지원되는 기능인데 Java 1.4에서 Assertion 기능을 사용하려면 컴파일시에 명령프롬프트에서 -source 1.4 옵션을 지정해주어야 한다.
Java 1.4에서 assert문이 들어간 소스 파일 컴파일 하기 |
javac -source 1.4 Test.java |
물론 Java 1.5부터는 자동적으로 이를 인식하기 때문에 Java 1.5이상의 버전을 사용하는 사람은 이를 신경쓰지 않아도 된다. 그럼 시험삼아 아래의 간단한 코드를 컴파일하고 실행해보자.
Test.java |
public class Test { public static void main(String[] args) { assert 1 != 1 : "왼쪽의 조건식이 false이면 이 메시지와 함께 AssertionError가 발생합니다."; } } |
위의 코드에서 Assertion은 assert문 이후에 특정 조건식이 오는 것을 알 수 있다. assert문 이후의 조건이 false이면 AssertionError가 발생하게되고 AssertionError와 함께 출력하고싶은 정보를 (위의 파란 부분으로 표시된 부분처럼) 문자열의 형태로 콜론(:) 문자 이후에 지정해줄 수 있다. 이 부분은 특별히 출력할 메시지가 없을 경우에 생략이 가능하다.
명령프롬프트를 통해 컴파일하고 실행해보면 이상하게도 AssertionError이 발생하지 않는다. 이는 Assertion이 일반적인 실행시에는 발생하지 않기 때문이다. 이때문에 assert를 사용하려면 java 명령문에 추가적으로 ea(enable assertion) 옵션을 주어야 하므로 class 파일을 실행할 때 아래와 같은 명령으로 실행해야햔다.
실행시의 ea옵션을 통한 Assertion 기능 활성화 |
java -ea Test.java |
나 같은 경우 이클립스를 사용하는데 이클립스에서도 Project의 Run Configuration을 통해서 ea 옵션을 지정해줄 수 있는데 이 방법에 대해선 따로 포스팅하려고 한다. 포스팅하는데로 이 글에 링크를 작성하겠다.
참고문헌
http://blog.naver.com/fantaxis/120121450365
'BackEnd FrontEnd > JAVA' 카테고리의 다른 글
Java에서 syntax error on token identifier expected after this token 대처 방법 출처: http://belitino.tistory.com/186 [belitino] (0) | 2017.07.23 |
---|---|
접근제한 (0) | 2017.07.20 |
직렬화(serialization) 역직렬화(deserialization) (0) | 2017.06.30 |
volatile (0) | 2017.06.29 |
String, StringBuffer (0) | 2017.06.27 |