При использовании try catch для отлова определенного типа ошибок следует убедиться, что другие типы исключений не подавляются. В противном случае, если вычисленный код выдаст исключение другого типа, он может исчезнуть и вызвать непредвиденное поведение кода.
Я бы предложил написать такой код:
try {
eval(code);
} catch (e) {
if (e instanceof SyntaxError) {
alert(e.message);
} else {
throw( e );
}
}
Обратите внимание на раздел "else".