이 글은 원서와 친해지기 위해 JavaWorld의 Java 101: The essential Java language features tour, Part 1 중 일부를 정리한 글입니다.

이 시리즈의 첫번째는 assertionsgeneric에 대한 것이다.

Assertions in Java 1.4

Java 1.4에 소개 된 Assertion은 유용하고 중요한 에디션이다. Assertion은 프로그램이 올바르게 동작하거나 동작하지 않는 요구사항을 코드화하는데 사용된다. condition을 테스트하여, false가 나오게 되면 개발자에게 알려준다. assertions을 사용하는 것은 코드가 올바르게 동작하는지에 대한 확신을 준다.

Assertions은 버그가 발생한 시점에서 어디서 버그가 발생했는지 알려주도록 사용 할 수 있다.

Assert는 예약어이며 디버깅을 위해 사용되기 때문에 JVM 기본 실행시에는 무시 된다. assert 사용을 위해서는 -ea 옵션을 사용해야 한다.

Implemeting Assertions

Assertions은 assert문과 java.lang.AssertionError class를 통해 구현되어 있다.

assert문은 아래와 같은 형식을 가진다

assert BooleanExpr;

BooleanExpr가 ture라면 넘어가고, false라면 아래와 같은 AssertionError가 던져진다.

Exception in thread “main” java.lang.AssertionError
    at AssertDemo.main(AssertDemo.java:6)

그러나 이러한 메시지는 정보가 부족하다. 조금 더 메시지를 담고 싶다면 아래와 같이 코드를 작성 할 수 있다

public class AssertDemo
{
   public static void main(String[] args)
   {
      int x = -1;
      assert x >= 0: “x < 0; // assert BooleanExpr : expr
   }
}

이제 이 코드를 실행하면 아래와 같은 AssertionError가 던져진다.

Exception in thread “main” java.lang.AssertionError: x < 0
    at AssertDemo.main(AssertDemo.java:6)

이렇게 assert 예외를 던질 때 명시적인 정보를 추가 할 수 있다.