Java의 assert 키워드
-
Java에서
assert
를 조건으로 사용 -
Java에서
assert condition : expression
사용 - 코드의 도달 할 수없는 부분이 실제로 도달 할 수 없는지 확인하는 방법
- 내부 불변의 경우
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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn