node.js错误处理
在写Nodejs的时候,不太清晰关于错误要怎么处理,这里做了一个小实验,验证下自己的认知对不对:
- 错误统一在一个地方进行处理即可
- 抛出错误,程序不会继续往下执行
// case.js
function foo() {
bar()
throw new Error("I am an error from foo!")
console.log('I am a log in foo.')
return 'foo'
}
function bar() {
throw new Error("I am an error from bar!")
console.log('I am a log in bar.')
return 'bar'
}
function start() {
try {
const t = foo()
console.log('I am start!')
console.log(`t: ${t}`)
} catch(e) {
console.log(e);
}
}
start()
以上实验代码返回的结果:
Error: I am an error from bar!
at bar (/Users/black_j/Projects/nodejs/lesson/error_handler/case1.js:9:8)
at foo (/Users/black_j/Projects/nodejs/lesson/error_handler/case1.js:2:2)
at start (/Users/black_j/Projects/nodejs/lesson/error_handler/case1.js:16:13)
at Object.<anonymous> (/Users/black_j/Projects/nodejs/lesson/error_handler/case1.js:24:1)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Function.Module.runMain (module.js:684:10)
把foo()里面的bar()注释,返回结果:
Error: I am an error from foo!
at foo (/Users/black_j/Projects/nodejs/lesson/error_handler/case1.js:3:8)
at start (/Users/black_j/Projects/nodejs/lesson/error_handler/case1.js:16:13)
at Object.<anonymous> (/Users/black_j/Projects/nodejs/lesson/error_handler/case1.js:24:1)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Function.Module.runMain (module.js:684:10)
at startup (bootstrap_node.js:187:16)
从结果可以看出验证了自己之前的想法。