http://www.atmarkit.co.jp/fjava/javatips/095java011.htmlJ2SDK 1.4 부터 사용가능
assert 조건 ;
assert 조건 : 조건을 만족하지 못했을때 보여줄 메시지 ;
개발 모드에서는 활성화, 운영 모드에서는 비 활성화 함으로서...
성능 향상을 꾀할수 있다.
컴파일
javac -source 1.4 MyAssertion.java
실행
| PrepaidCard.java |
public class PrepaidCard { public int amount;
public PrepaidCard(int precharge) { assert precharge >= 0 : "초기잔고가 틀렸습니다.";//사전조건
amount = precharge;
assert amount >= 0 : "잔고가 틀렸습니다.";//사후조건 } public void pay(int price) { assert price >= 0 : "가격이 음수 입니다. 가격:" + price; // 사전조건 assert amount >= price : "가격이 잔고 보다 많음 가격:" + price + " 잔고:" + amount; //사후조건
amount -= price; System.out.println("가격:" + price + " 잔고:" + amount); assert amount >= 0 : "잔고부정"; //사후조건 }
public static void main(String args[]) { PrepaidCard card = new PrepaidCard(1000);1000원짜리 작성 card.pay(300);//300원 정상 card.pay(500);//500원 정상 card.pay(-200);//에러 } } |
| 실행결과 |
가격:300 잔고:700 가격:500 잔고:200 Exception in thread "main" java.lang.AssertionError: 가격이 음수입니다. 가격:-200 at PrepaidCard.pay(PrepaidCard.java:12) at PrepaidCard.main(PrepaidCard.java:26) |