"assert" 키워드의 역할은 무엇입니까?
무인 does does 가 뭐죠?assert
" " " " , " " " :
private static int charAt(String s, int d) {
assert d >= 0 && d <= s.length();
if (d == s.length()) return -1;
return s.charAt(d);
}
「 」로 .-enableassertions
(오류)-ea
이 스테이트먼트(「 스테이트먼트」)를.
assert cond;
와 동등하다
if (!cond)
throw new AssertionError();
이 옵션을 사용하지 않고 프로그램을 실행하면 아사트 스테이트먼트는 무효가 됩니다.
를 들어, 「」라고 하는 것은,assert d >= 0 && d <= s.length();
되어 있는 와 같이, 「」는 「」에 상당합니다.
if (!(d >= 0 && d <= s.length()))
throw new AssertionError();
( ( )로 -enableassertions
(마이너스,)
공식적으로는 자바 언어 사양: 14.10. 스테이트먼트에는 다음과 같이 기술되어 있습니다.
.10.
assert
★★★
'어설'을 .assert
부울식을 포함하는 문.어설션은 이노블 또는 디세이블 중 하나입니다.어설션이 네이블일 경우 어설션 실행에 의해 부울식이 평가되고 표현식이 다음과 같이 평가되면 오류가 보고됩니다.false
어설션이 비활성화되면 어설션 실행은 전혀 영향을 받지 않습니다.
여기서 "enabled or disabled"는 다음과 같이 제어됩니다.-ea
스위치 및 "에러가 보고되었습니다"는 다음 메시지가AssertionError
집니니다
그리고 마지막으로 잘 알려지지 않은 특징이 있습니다.assert
:
붙일 수 요.: "Error message"
음음음같 뭇매하다
assert d != null : "d is null";
AssertionError 오류 메시지를 지정합니다.
이 게시물은 여기 기사로 고쳐졌습니다.
되지 않을 , " " " if이 이 if "AssertionError
던져질 것이다.
않으면 어사션을 활성화해야 합니다.그렇지 않으면assert
표현은 아무것도 하지 않습니다.
http://java.sun.com/j2se/1.5.0/docs/guide/language/assert.html#enable-disable
assert
는, 이 「」(디버깅툴)로, 「Debugging Tool(디버깅툴)」을 합니다.AssertionFailed
예외로 설정합니다.이 경우, 프로그램은 다음에 나오는 두 조건 중 하나가 false로 평가될 경우 예외를 발생시킵니다.
일반적으로 말하면 assert
제품 코드에 사용해서는 안 됩니다.
저는 이 제품에 대한 많은 문서를 읽었지만, 사용 방법, 시간, 장소를 아직 잘 모르겠습니다.
알기 쉽게 하기:
이와 같은 상황이 발생했을 경우:
String strA = null;
String strB = null;
if (2 > 1){
strA = "Hello World";
}
strB = strA.toLowerCase();
strB = strA.toLowerCase();에 노란색 선을 표시하면 strA가 strB에 NULL 값을 생성할 수 있다는 경고를 받을 수 있습니다.strB가 절대 null이 아니라는 것을 알면서도 만약을 위해 assert를 사용하여
1. 경고를 비활성화합니다.
2. 최악의 경우(애플리케이션 실행 시) 예외 오류를 발생시킵니다.
코드를 컴파일 할 때 결과가 나오지 않고 버그일 수 있습니다.그러나 응용 프로그램은 크래쉬하지 않으며, 이 버그의 원인을 찾는 데 많은 시간을 소비합니다.
그래서 이렇게 주장을 하면
assert strA != null; //Adding here
strB = strA .toLowerCase();
컴파일러에게 strA는 절대 null 값이 아니며 경고를 '평화롭게' 끌 수 있다고 말합니다.NULL(최악의 경우)인 경우 응용 프로그램을 중지하고 버그를 던져 위치를 확인합니다.
이 버전의 assert 문을 사용하여 AssertionError 상세 메시지를 제공합니다.시스템은 Expression2의 값을 적절한 AssertionError 컨스트럭터에 전달합니다.AssionError 컨스트럭터는 값의 문자열 표현을 사용합니다.
상세 메시지의 목적은 어설션 실패의 상세 내용을 캡처하여 전달하는 것입니다.이 메시지를 통해 어설션 실패의 원인이 된 오류를 진단하고 최종적으로 수정할 수 있습니다.상세 메시지는 사용자 수준의 오류 메시지가 아니므로 일반적으로 이러한 메시지를 개별적으로 이해하거나 국제화할 필요가 없습니다.상세 메시지는 실패한 어설션을 포함하는 소스 코드와 함께 풀 스택트레이스의 컨텍스트에서 해석됩니다.
어설션은 일반적으로 프로그램의 예상 동작을 확인하는 수단으로 사용됩니다.프로그램 상태에 대한 프로그래머의 추측이 틀렸기 때문에 대부분의 경우 충돌로 이어질 것입니다.여기서 어설션의 디버깅 양상이 나타납니다.그들은 우리가 올바른 행동을 하고 싶다면 무시할 수 없는 체크포인트를 만듭니다.
이 경우 착신 파라미터에 대한 데이터 검증을 수행합니다.단, 클라이언트가 나중에 함수를 잘못 사용하는 것을 막지는 않습니다.특히 릴리즈 빌드에 포함되어 있지 않은 경우(해당하지 않는 것이 좋습니다).
사실대로 말하다 이외의 「」, 「」, 「」, 「」를 합니다.java.lang.AssertionError
.
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.10
Assertion이 설정된 상태에서 앱을 실행하면 AssertionError가 발생합니다.
int a = 42;
assert a >= 0 && d <= 10;
이를 실행하는 경우 java - ea - jar peiska.jar 라고 입력합니다.
java.lang을 슬로우합니다.Assertion Error(어설션 오류)
언급URL : https://stackoverflow.com/questions/3018683/what-does-the-assert-keyword-do
'programing' 카테고리의 다른 글
PHP 연결 실패: SQLSTATE[HY000] [2002] 접속 거부 (0) | 2023.01.02 |
---|---|
vue 전원이 켜진 Chrome 확장 내에서 npm을 사용하여 부트스트랩 및 종속성을 로드하는 방법 (0) | 2023.01.02 |
파일 핸들을 사용하여 파일 이름 가져오기(또는 파일 삭제) (0) | 2023.01.02 |
JavaScript 개체: 이름으로 변수 속성에 문자열로 액세스합니다. (0) | 2023.01.02 |
PHP 응용 프로그램에서 다중 스레딩을 사용하려면 어떻게 해야 합니까? (0) | 2023.01.02 |