JavaScript - поймать SyntaxError и запустить альтернативную функцию - PullRequest
13 голосов
/ 13 марта 2010

Я пытаюсь построить что-то на JavaScript, чтобы я мог иметь вход, который может быть что угодно как строка, xml, javascript и (не-JavaScript-строка без кавычек) следующим образом:

//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 работают хорошо, так как они являются простыми нативными форматами javascript

но когда я пытаюсь использовать это внутри javascript

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

Очевидно, javascript интерпретирует это как синтаксическую ошибку, потому что считает, что javascript выдает ошибку SyntaxError.

Так что я хотел бы сделать это, чтобы отловить эту ошибку и выполнить метод корректировки, если это произойдет.

Я уже пробовал с try catch, но он не работает, так как он продолжает возвращать синтаксическую ошибку, как только пытается выполнить код.

Любая помощь будет высоко ценится

Приветствия:)

Дополнительная информация: Представьте себе внешний файл, который будет читать javascript, используя spidermonkey, так что это не браузер (я не могу использовать HttpRequest, DOM и т. Д.) ... не уверен если это имеет значение, но это так. :)

1 Ответ

21 голосов
/ 13 марта 2010

Вы уверены, что блок Try ... Catch не будет работать? Этот пример работает для меня в Firefox.

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