2011-08-22 5 views
22

JavaScript로 일반 웹 응용 프로그램을 개발할 때 일반적으로 try/catch 문을 사용할 필요가 없습니다. checked exception, 파일 IO 또는 데이터베이스 연결이 자바 스크립트에 없습니다.언제 JavaScript에서 try/catch를 사용해야합니까?

은 (는) JavaScript에서 유용합니다. 언제 사용할 수 있습니까?

+0

'자바 스크립트에 파일 IO 또는 데이터베이스 연결이 없습니다.' Node.js는 실제로 그것들을 지원 합니다만,'try/catch'를 사용할 필요는 없습니다. – pimvdb

답변

8

실행중인 코드에서 예외가 발생할 때마다 사용하십시오. 당신이 throw 자신의 실수를 할 수 있다는 것을 기억하십시오 - 제가 사용하는 try…catch 물건의 대부분은 제 자신의 예외를 잡기위한 것입니다.

19

try...catch 블록은 일반적으로 사용량이 적을 것을 권장하며 사용하는 언어에 의존하지 않습니다.

이 주된 이유는 catch 블록의 비용입니다. 또 다른 이유는 하나의 try...catch 블럭으로 많은 문장을 감쌀 때 catch 블럭에 정확하게 무슨 주요 문제점인지 확신 할 수 없다는 것입니다.

예외 (오류)가 발생할 확률을 줄이려면 validation 또는 if...else 블록과 같은 기술을 사용하는 것이 좋습니다. 대신 try...catch를 사용하는 사용자에서 가져온 숫자로 작업 할 때 예를 들어, 사용할 수 있습니다

if (isNaN(numberVariable)) 
{ 
    alert('you should enter a valid number'); 
} 
4

외부 자바 스크립트 라이브러리와 위젯은 종종 인스턴스화 오류에 대한 예외를 사용합니다. 그것은 필요하는 것이 일반적이다 :

try { 
    var w = new Widget(); 
} 
catch (e) { 
    // widget failed 
} 
1

글쎄, 난 개인적으로 내가 제대로 실행됩니다 모르겠어요 몇 가지 코드를 작성할 때 (잘못?)를 사용하지만 사용자가에 대해 알 필요가 없습니다 오류. 그 외에는

, 다음과 같이, 나는, 일부 사용자 컨트롤에 그것을 사용하고 당신은 당신의 HTML 마크 업의 '행동'속성을 정의 할 수있는, 그리고 자바 스크립트는 해당 작업을 수행하려고합니다 :

try{ 
    window['method'](args); 
}catch(e){ 
    try{ 
     window['optionalExceptionHandler'](e, args); 
    }catch(e){ return; } 
} 

13

하나 개의 시나리오는 내가 잡기/마침내 유용한 널은 모든 수준에서 팝업 수 있습니다 중첩 객체입니다/시도 찾을 수 (나는 eval()의 xD보다 더 나은 생각을 좋아한다). 예를 들어,이 사항을 고려하십시오

if(one && one.two && one.two.three && one.two.three.four) 
    something = one.two.three.four.five; 

지금 변수 이름은 현실과 이상 상상 :

var something = one.two.three.four.five; 

하나가 자세한 코드의 비트를 작성해야이 100 % 안전을 "GET"수행 if 문을 사용하면 매우 추악한 코드를 빠르게 얻을 수 있습니다.

내가 어떤 "다른"시나리오를 걱정하지 않을 때 마지막으로이를 단순화// 캐치를 시도하고 단지 대상 여부를 원하는 사용하는 경향이 :

var something; 
try { something = one.two.three.four.five; } 
catch { something = "default"; } 
finally { doSomething(something); } 
13

가 나는 post here에서 이걸 발견 :

언제 try-catch를 사용해야합니까?

try-catch 문은 사용자의 오류를 숨기고 싶거나 사용자의 이익을 위해 사용자 정의 오류를 생성하려는 경우 언제든지 사용해야합니다. try-catch 문을 실행할 때 브라우저의 일반적인 오류 처리 메커니즘이 비활성화됩니다.

대형 응용 프로그램을 빌드 할 때 이점을 볼 수 있습니다. 모든 응용 프로그램의 흐름에서 가능한 모든 상황을 디버깅하는 것은 종종 시간이 많이 걸리고 많은 가능성이 우연히 간과 될 수 있습니다. 물론 올바른 버그 테스트를 통해 간과 할 수있는 영역이 없습니다. 그러나 try-catch 문은 개발 중에 예상하지 못한 비정상적인 상황에서 실패 할 수있는 코드 영역에서 멋진 대체 기능으로 작동합니다.

try-catch 문이 제공하는 또 다른 이점은 아무 래도 이해하지 못하는 사용자로부터 지나치게 기술적 인 오류 메시지가 표시되지 않는다는 것입니다.

try-catch를 사용하는 가장 좋은시기는 어떤 이유로 든 제어 할 수없는 오류가 발생할 것으로 의심되는 코드 부분에 있습니다.

언제 시도 잡아 두어야합니까?

오류가 발생할 경우이 경우에는 문제를 디버그하고 마스크하지 않으므로 try-catch 문을 사용하지 마십시오. try-catch 문은 오류가 발생할 것으로 의심되는 코드 섹션에서만 실행되어야하며 가능한 많은 상황 때문에 오류가 발생할 것인지 아니면 그렇게 할 것인지 완전히 확인할 수는 없습니다. 후자의 경우, try-catch를 사용하는 것이 적절할 것입니다.

관련 문제