У меня есть следующий код для запуска в eval()
:
const code = `
async function func() {
asd();
}
func();
`;
try {
console.log("running code");
return eval(code);
}
catch (err) {
console.log("error");
return err.message;
}
В этом случае asd
- это undefined
, и поэтому я ожидаю, что ссылочная ошибка будет возвращена в виде строки (return err.message;
). Однако вместо срабатывания блока catch генерируется исключение, как будто отсутствует блок try / catch. Но если бы я запустил eval("asd()")
, блок catch
перехватил бы ошибку и вернул строку. Есть ли что-то другое, что мне нужно сделать для вложенных функций?
Примечание. Весь этот код находится в асинхронной функции из-за другого кода (до const code ...
), если это имеет значение.