2010-03-12 3 views
13

내가 문자열, XML, 자바 스크립트 및 (따옴표없이 비 자바 스크립트 문자열) 등의 모든 할 수있는 입력을 할 수 있습니다 자바 스크립트에 뭔가를 구축하기 위해 노력하고있어 다음과 같이 :자바 스크립트 - 캐치 구문 에러 및 실행 대체 기능

//strings 
    eval("'hello I am a string'"); /* note the following proper quote marks */ 

//xml 
    eval(<p>Hello I am a XML doc</p>); 

//javascript 
    eval("var hello = 2+2;"); 

그래서이 첫 번째 3은 간단한 자바 스크립트 기본 형식으로

하지만이기 때문에 잘 작동 나는이 내부를 사용하려고 할 때 자바 스크립트

//plain-text without quotes 
    eval("hello I am a plain text without quotes"); 
    //--SyntaxError: missing ; before statement:--// 

자바 스크립트가 SyntaxError를 던지고 있다고 생각하기 때문에 분명히 javascript는 구문 오류로 해석합니다.

이 오류가 발생하면이 오류를 catch하고 조정 방법을 수행하기 위해 무엇을하고 싶습니다.

나는 try catch로 이미 시도했지만 코드를 실행하자마자 구문 오류를 반환하기 때문에 작동하지 않습니다.

어떤 도움이 많이

건배 :)

추가 정보 주시면 감사하겠습니다 : ( 자바 스크립트가 SpiderMonkey를를 사용하여, 읽을 것이다 외부 파일을 상상을, 그래서 브라우저가 아닌 물건 그럴 수 없어 HttpRequest, DOM 등 ...) ..이 문제가 있는지 확실하지 않지만 거기에 있습니다. :)

답변

20

Try...Catch 블록이 작동하지 않습니까? 이 예제는 firefox에서 작동합니다. 맞아

try { 
    eval("hello I am a plain text without quotes"); 
} catch(err) { 
    alert("error caught"); 
} 
+0

헥타르은 (어떤 짐승 :()! 많이 제시, 내가 평가하지 않고 직접 선언하기 전에하려고했던 덕분에, 그게 내가 오류를 가지고 왜 ...하지만 평가 후면 내부에 그 건배 잘 했어! 건배 : – zanona

+0

네,이 일을 잘못한 것이 보이지 않습니다. – Robusto

+2

나는 또한 구문 오류를 잡으려고했지만 콘솔에 "uncaught"로 보냈다. 구문 오류는 "eval"이 아닌 중단 된 Ajax 요청으로 인해 발생했지만 동일한 개념이므로 "try..catch"가 작동한다고 생각했지만 그렇지 않았습니다. –