2010-07-23 3 views
3

나는 RangeError, ReferenceError 및 TypeError와 같은 오류를 잡으려고 시도한 사람이 자바 스크립트의 예외 처리 기술을 사용했는지 궁금합니다.JavaScript에서 RangeError, ReferenceError, TypeError를 던지고 잡는 방법은 무엇입니까?

오류 RangeError에 대한 예를 들어

: 위의 경우

try { 
var anArray = new Array(-1); 
// an array length must be positive 

     throw new RangeError("must be positive!") 
} 
catch (error) { 
     alert(error.message); 
     alert(error.name); 
} 
finally { 
     alert("ok, all is done!"); 
} 

, 나는 새로운 오류 RangeError 객체를 던지는 무엇입니까?

경고 경고 (error.message)의 코드 예제에서 "반드시 양수 여야합니다"라는 사용자 정의 메시지가 표시되지 않습니다.

내 자신의 RangeError 객체 (및 ReferenceError, TypeError)를 던질 수 있습니까?

최고.

답변

2

이것은 거의 1 년 전이지만, 나는 결코 늦지 않게 잘 지낸다. 그것은 브라우저에 따라 다르지만 어떤 경우 (기침, 기침, 파이어 폭스, 기침)에서, 오류 RangeError는 자신의 공급 대신 오류 개체의 메시지 속성을 상속합니다. 유일한 해결 방법은 new Error("must be positive!")입니다. 죄송합니다.

2

실제로 배열은 기본적으로 해시 테이블이기 때문에 JavaScript의 배열 인덱스는 양수 일 필요는 없습니다. 배열에 존재하지 않는 키에 액세스하려고하면 결과는 단순히 undefined이됩니다.

당신은 간단한 조건이 잡을 수 :

if (typeof someArray[foo] !== "undefined") { 
    //do stuff 
} else { 
    //do error handling 
    //Here I'm just throwing a simple exception with nothing than a message in it. 
    throw new Error('something bad happened'); 
} 

난 당신이 생각, "형식 오류"가 무슨 뜻인지 모르겠어요. 좀 더 자세히 설명해주세요.

+0

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/TypeError – DjangoRocks

+0

이걸 그냥 지키고 바로 잡아야합니다.'new Array (-1)'는 잘못되었습니다. 양수가 아니면 안되는 인덱스에 대해 올바른 반면,'Array' 생성자의 첫 번째 인수는 생성 후 배열 내부의 요소 수 (기본값은 모두 undefined입니다)이며 기본값은 0입니다. 당연히 당신은 그것 안에 0 개 이하의 원소로 배열을 만들 수 없습니다. (Javascript 배열에서 음수 인덱스를 사용하면 'length' 속성을 조정하지 않습니다. 사용 된 가장 높은 양수 인덱스를 나타냅니다. 따라서 대부분의 경우이를 허용하지 않는 것이 좋습니다) –

관련 문제