2017-11-15 16 views
-1

저는 Java에 상당히 익숙하지 않습니다. 루프의 배열에서 작동하고 배열마다 모든 루프가 변경되는 코드가 있습니다. 때로는 배열이 너무 짧으면 코드가 IndexOutOfBoundsException을 throw합니다. 던져 예외가없는 경우에만 코드를 실행하는 방법이 있습니까? 자바 스크립트에서 나는 비슷한 것을 할 수 있다고 알고있다.Java에서 try/catch를 사용하지 않고 예외를 확인하는 방법이 있습니까?

var a = arr[index]; 
if (!a === null) { //do something } 

나는 자바에서 어떻게 같은 효과를 얻을 수 있을까?

+3

'IndexOutOfBoundsException'는 널 (null) '과는 아무 상관이 없습니다 '. 요소에 액세스하기 전에 색인을 확인할 수 있습니다. – Maroun

+0

자바에는'==='연산자가 없습니다. – shmosel

답변

7

당신은 예외가 슬로우되지 않는 경우에만 코드를 실행할 수있는 특정 인덱스

if (arr != null && index >= 0 && index < arr.length) { 
    // arr[i] exists 
} 
0

에 배열 항목에 액세스하기 전에 확인할 수 있습니다

try { 
    // Code that may throw an exception... 

    // Only execute this if exception isn't thrown. 
} catch (SomeException e) { 
    // Handle exception. 
} 

그러나 더 나은 전략이 아닌 원인이다 처음에는 예외였다. 위의 추악한 구문 외에도 전체 스택 추적을 작성해야하기 때문에 예외가 실제로 느립니다. 즉, 많은 응용 프로그램에서 충분히 빠르지 만 즉시 던져 버릴 스택 추적을 작성하는 것은 낭비적이고 더 빨리 수행하지 않는 것입니다.

여기서 말하는 예외 종류는 런타임 예외이며 확인되지 않은 예외 유형입니다. 런타임 예외는 프로그래밍 오류를 나타 내기 위해 throw됩니다 -이 경우 배열 인덱스가 경계에 있는지 확인하지 않았습니다. 피연산자가 거짓 번 평가 중지 &&를 사용,

if (i >= 0) { 
    if (i < arr.length) { 
    // Only execute this if index in bounds 
    } 
} 

을 또는 :

당신은 별도의 조건으로이를 확인할 수 있습니다

if (i >= 0 && i < arr.length) { 
    // ... 
}