Программирование > JavaScript & JScript

Пользовательская функция

(1/1)

0b0rm0t:
Суть вот в чем: я имею строку, содержащую мат.функцию (например, "3*х+2"). Из нее я делаю функцию f(x) (через new Function).
А теперь вопрос: можно ли как-нибудь узнать, является ли только что созданная функция корректной (нет ошибок синтаксиса типа "3*/х+1")?
Нужно это, чтобы сообщить пользователю, что мол там ошибка, исправляй (знать где она - необязательно).
Проблема то в том, что функция создается всегда, из любой строки, а попытка вычислить значение "неправильной" функции вызывает Эксплореровскую ошибку, что пользователя, конечно, напугает.
Самому строчку разбирать неохота - не столько сложно, сколько излишне - задача того не стоит.

Werwolf13:

try
{
   var func = new Function("x", "return(3*/x+1)");
}
catch(e)
{
   alert(\'Error!\');
};

0b0rm0t:
Это сильно помогает, но не до конца - имена функций, входящих в выражение, оно не проверяет. Так что такой код все равно вызывает ошибку:


set();

function set()
{
   try
   {
      f=new Function("x", "return func(x)");
   }

   catch(e)
   {
      alert(\'Syntax error.\');
      return;
   };

   alert(f(0));
}


Это можно как-нибудь исправить?

И еще: что такое catch(e)? А конкретно - е.

гоша:
обработку исключений нужно включать и при создании функции, и при выполнении. А проще -- никакую функцию вообще не создавать


--- Код: ---
function safeEval(code){
try {
return eval (code);
} catch (e) {
return "Error: " + (e.description || e.message);
}
}

alert (safeEval("2+2"));
alert (safeEval("foo(3"));

--- Конец кода ---


e - это объект класса Error, так называемое исключение. Содержит информацию об ошибке (код, сообщение итп).

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии