可恢复的错误
【Recoverable errors】
在 REPL 提示符下,按下 Enter 会将当前行的输入发送到 eval 函数。为了支持多行输入,eval 函数可以返回一个 repl.Recoverable 实例到提供的回调函数:
function myEval(cmd, context, filename, callback) {
let result;
try {
result = vm.runInThisContext(cmd);
} catch (e) {
if (isRecoverableError(e)) {
return callback(new repl.Recoverable(e));
}
}
callback(null, result);
}
function isRecoverableError(error) {
if (error.name === 'SyntaxError') {
return /^(Unexpected end of input|Unexpected token)/.test(error.message);
}
return false;
}