这个问题很奇怪io.js 1.0.4
var assert = require('assert');
assert.throws(function(){
let foo = 'foo';
let foo = 'foo';
},SyntaxError
) // test doesn't pass
assert.throws(function(){
throw new SyntaxError('error')
},SyntaxError
) // test pass
答案 0 :(得分:0)
SyntaxError
会在分析时抛出,例如
console.log('something something');
function fn(){
let x = 4;
let x = 5;
}
这将抛出。请注意,console.log
不仅不打印任何内容,而且fn
甚至不会被运行。所以在你的情况下,你无法抓住,因为代码还没有开始执行。
注意,由于parse time
是关键所在,因此在需要文件时可以捕捉到这种情况。
try {
require('./module-file')
} catch (e){
if (e instanceof SyntaxError){
console.log('There was a syntax error');
}
}
模块file.js
"use strict";
function fn(){
let x = 4;
let x = 5;
}