Java의 어설션

어설션을 사용하면 프로그램에서 이루어진 모든 가정의 정확성을 테스트할 수 있습니다. 어설션은 다음을 사용하여 달성됩니다. 주장하다 Java의 진술. 어설션을 실행하는 동안 해당 내용이 참인 것으로 간주됩니다. 실패하면 JVM은 다음과 같은 오류를 발생시킵니다. 어설션 오류. 주로 개발 중 테스트 목적으로 사용됩니다.

그만큼 주장하다 문은 부울 표현식과 함께 사용되며 다음과 같이 작성할 수 있습니다. 두 가지 다른 방법 .

첫 번째 방법:

 assert expression; 

두 번째 방법:

 assert expression1 : expression2; 

예:

자바




// Java program to demonstrate syntax of assertion> import> java.util.Scanner;> class> Test {> > public> static> void> main(String args[])> > {> > int> value => 15> ;> > assert> value>=> 20> :> ' Underweight'> ;> > System.out.println(> 'value is '> + value);> > }> }>

산출

value is 15 

어설션을 활성화한 후:

산출:

Exception in thread 'main' java.lang.AssertionError: Underweight 

어설션 활성화

기본적으로 어설션은 비활성화되어 있습니다. 주어진 대로 코드를 실행해야 합니다. Java 소스 코드에서 어설션 문을 활성화하는 구문은 다음과 같습니다.

 java –ea  Test 

또는

 java –enableassertions  Test 

여기서 Test는 파일 이름입니다.

어설션 비활성화

Java에서 어설션을 비활성화하는 구문은 다음과 같습니다.

 java –da  Test 

또는

 java –disableassertions  Test 

여기서 Test는 파일 이름입니다.

어설션을 사용하는 이유

프로그래머가 자신의 가정이 틀렸는지 아닌지 확인하고 싶은 곳 어디든 가능합니다.

  • 도달할 수 없는 것처럼 보이는 코드가 실제로 도달할 수 없는지 확인합니다.
  • 댓글에 작성된 가정이 올바른지 확인합니다.
if ((x & 1) == 1) { } else // x must be even { assert (x % 2 == 0); } 
  • 기본 스위치 케이스에 도달하지 않았는지 확인합니다.
  • 객체의 상태를 확인합니다.
  • 방법의 시작 부분에
  • 메소드 호출 후.

어설션과 일반 예외 처리

어설션은 주로 논리적으로 불가능한 상황을 확인하는 데 사용됩니다. 예를 들어, 코드가 실행되기 전에 예상되는 상태나 실행이 완료된 후의 상태를 확인하는 데 사용할 수 있습니다. 일반적인 예외/오류 처리와 달리 어설션은 일반적으로 런타임 시 비활성화됩니다.

어설션을 사용하는 위치

  • 개인 메소드에 대한 인수입니다. 비공개 인수는 개발자의 코드에서만 제공되며 개발자는 인수에 대한 가정을 확인하고 싶을 수도 있습니다.
  • 조건부 사례.
  • 모든 메소드의 시작 부분에 있는 조건입니다.

어설션을 사용하지 말아야 할 경우

  • 오류 메시지를 대체하는 데 어설션을 사용해서는 안 됩니다.
  • 사용자가 제공할 수 있는 공용 메서드의 인수를 확인하는 데 어설션을 사용하면 안 됩니다. 사용자가 제공한 오류를 처리하려면 오류 처리를 사용해야 합니다.
  • 명령줄 인수에는 어설션을 사용하면 안 됩니다.

예:

자바




// Java program to demonstrate assertion in Java> public> class> Example {> > public> static> void> main(String[] args)> > {> > int> age => 14> ;> > assert> age <=> 18> :> 'Cannot Vote'> ;> > System.out.println(> 'The voter's age is '> + age);> > }> }>

산출

The voter's age is 14