Java의 assert 키워드

Rupam Yadav 2023년10월12일
  1. Java에서assert를 조건으로 사용
  2. Java에서assert condition : expression사용
  3. 코드의 도달 할 수없는 부분이 실제로 도달 할 수 없는지 확인하는 방법
  4. 내부 불변의 경우
Java의 assert 키워드

Java에서는assert키워드를 사용하여 어설 션을 활성화 할 수 있습니다. 이 함수는 프로그램에 대한 가정을 테스트하는 데 사용됩니다. Java에서 어설 션을 사용할 수있는 두 가지 방법이 있으며이 기사에서는이를 다룰 것입니다.

Java에서assert를 조건으로 사용

어설 션은 프로그램에서 버그를 감지하고 수정하는 가장 빠르고 쉬운 방법입니다. 어설 션은 실행될 때 참으로 간주됩니다. 그렇지 않으면 거짓이면 어설 션 오류가 발생합니다.

여기서assert조건은 부울 표현식입니다.

public class JavaAssertCheck {
  public static void main(String args[]) {
    String[] names = {"John", "Mary", "David"};
    assert names.length == 2;
    System.out.println("There are " + names.length + "  names in an array");
  }
}

출력:

There are 3  names in an array

어설 션이 비활성화됩니다. 따라서이 프로그램은 오류없이 컴파일되고 실행됩니다. 그러나 어설 션이 사용 가능하고 조건이 거짓이면 JVM은 즉시AssertionError를 발생시키고 프로그램을 중지합니다.

Exception in thread
    "main" java.lang.AssertionError at JavaAssertCheck.main(JavaAssertCheck.java : 5)

Java에서assert condition : expression사용

이 어설 션 형식에서 조건이 거짓으로 평가되면 표현식이AssertionError의 생성자에 전달됩니다. 어설 션이 사용 가능하고 아래 표시된 가정이 거짓이면 전달 된 표현식이 자세한 메시지로있는AssertionError가 표시됩니다.

이 메시지는 오류를 올바르게 식별하고 오류를 수정하는 데 도움이됩니다.

public class JavaAssertCheck {
  public static void main(String args[]) {
    String[] names = {"John", "Mary", "David"};
    assert names.length == 2 : "The assertion condition is false.";
    System.out.println("There are " + names.length + "  names in an array");
  }
}

출력:

Exception in thread "main" java.lang.AssertionError: The assertion condition is false.
	at JavaAssertCheck.main(JavaAssertCheck.java:5)

여기에서는 Java에서 assertion의 개념을 활용할 수있는 특정 조건을 보여줍니다.

코드의 도달 할 수없는 부분이 실제로 도달 할 수 없는지 확인하는 방법

public void unReachableCode() {
  System.out.println("Unreachable Code");
  return;
  assert true;
}

흐름에 도달하지 않아야한다고 생각한 위치에 가정을 배치하면이 함수는 도달 할 수없는 문을 제거 할 때 오류를 표시합니다.

내부 불변의 경우

어설 션을 사용할 수 있기 전에 많은 프로그래머가 주석을 사용하여 프로그램에 대한 가정을 문서화했습니다. 아래의 다 방향 if 문에서 볼 수 있듯이 else 사례에 대한 가정을 설명하는 내용을 작성할 수 있습니다.

public class JavaAssertCheck {
  public static void main(String args[]) {
    int n = 37;
    if (n % 3 == 0)
      System.out.println("n % 3 == 0");
    else if (n % 3 == 1)
      System.out.println("n % 3 == 1");
    else
      assert n % 3 == 2 : "Assumption is false. " + n;
  }
}

사용자가 직접 전달할 수 있으므로 전달 된 인수를 확인하기 위해 공용 메서드에서 어설 션을 사용해서는 안됩니다. 따라서 실패하고AsssertionError가 발생할 수 있습니다. 응용 프로그램이 올바르게 작동하는 데 필요한 작업을 관리하는 데 어설 션을 사용하지 마십시오. 예를 들어 목록에서 null 요소를 제거하는 것입니다.

원칙적으로 어설 션에 포함 된 표현은 부작용이 없어야합니다.

작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn