# Java Assertion

# Java Assertion

by jihoon kim

HTML

<h1>Java Assertion</h1>
<script>
function autolink(id) {
  var container = document.getElementById(id);
  var doc = container.innerHTML;
  var regURL = new RegExp("(http|https|ftp|telnet|news|irc)://([-/.a-zA-Z0-9_~#%$?&=:200-377()]+)","gi");
  var regEmail = new RegExp("([xA1-xFEa-z0-9_-]+@[xA1-xFEa-z0-9-]+\.[a-z0-9-]+)","gi");
  return doc.replace(regURL,"<a href='$1://$2' target='_blank'>$1://$2</a>").replace(regEmail,"<a href='mailto:$1'>$1</a>");
}

window.onload = function () {
  var container = document.getElementById("contents");
	container.innerHTML = autolink("contents");
}
</script>

<pre id="contents">
자바 1.4의 새기능: Assertion : http://javacan.tistory.com/entry/79

■ Assertion 기본
    자바 1.4 버전은 1.3 버전에 보안을 비롯한 다양한 확장 API를 추가하여 그 크기가 방대해졌을 뿐만 아니라 NIO와 로깅 등 새로운 기능을 추가함으로써 완벽한 개발 플랫폼으로 확장되었다.
    이러한 새로운 기능들 중에서 자바에서는 전혀 새로운 기능이라고 할 수 있는 게 Assertion 기능이다.

■ Assertion은 무엇인가?
    Assertion은 불리언 식(expression)을 포함하고 있는 문장이다.
    그 문장이 실행될 경우 불리언 식이 참이라고 단언할 수 있다.
    :: 자바 1.4의 새기능이 Assertion 이다.
    :: 프로그램에서 가정하고 있는 사실이 올바른 지 검사할 수 있다.
    :: 이러한 검사 기능은 예외(Exception)를 사용해서도 구현할 수 있긴 하지만, Assertion은 예외와는 다른 의미의 검사 기능을 제공한다.
    <B>:: javac -ea 컴파일 옵션을 지정해야한다.</B>

■ 컴파일 옵션
    -ea 또는 -enableassertions  : 사용
    -da 또는 -disableassertions : 미사용

■ 강제적으로 Assertion 기능을 사용하도록 만드는 방법
   강제적으로 Assertion 기능을 사용하도록 유도하는 방법이 필요하다.
    static {
        boolean assertsEnabled = false;
        assert assertsEnabled = true;
        if (!assertsEnabled) throw new RuntimeException("Assertion 기능이 사용가능해야 합니다!");
    }
    위 코드를 main() 메소드가 있는 클래스에 추가하면 Assertion 기능을 사용하도록 유도할 수 있다.
    -ea 옵션이 enable되어 있지 않을경우 assert이후의 assertsEnable = true 구문이 실행되지 않으므로,
    if (!assertsEnabled) 문장이 실행되어 RuntimeException을 발생시킨다.

■ Assertion의 문법
    1. assert 불리언식;
    2. assert 뷸라온식:수식;

    ex) assert i<0;
        assert (!pageNo.equals(""));
        assert age > 0 : "나이는 음수가 될 수 없습니다:"+age;
        assert ((i/2*23-12)>0):checkValue();

# JavaMain.java
public class JavaMain {
	static...