如果我的try
在MongoClients catch
函数内部,则不会出现connect
错误
如果我尝试这样做:
try {
throw new Error('This is error');
} catch(e) {
console.log(`Catched: ${e}`);
}
我得到干净出口(很好-可以正常工作)
Catched: Error: This is error
[nodemon] clean exit - waiting for changes before restart
如果我在MongoDB的connect函数中尝试过:
try {
MongoClient.connect(config.url, config.options, (err, db) => {
if (err) { throw new Error('This is error'); }
});
} catch (err) {
console.log(`Catched: ${e}`);
}
我应用程序崩溃
Error: This is error
[nodemon] app crashed - waiting for file changes before starting...
所以这意味着它没有捕获我的异常。
答案 0 :(得分:0)
尝试一下
try {
let db = await MongoClient.connect(config.url, config.options);
} catch (err) {
console.log(`Catched: ${err}`);
}
如果您想尝试使用catch,请尝试以async-await/sequential
风格编写代码。
在这里您可以看到您在回调中将err
作为第一个参数,为什么它会捕获块? func1().then().catch()
样式代码也会发生同样的事情。
注意:如果要使用await,请在函数名称前使用async关键字。
例如:
async function test() {
try {
let db = await MongoClient.connect(config.url, config.options);
} catch (err) {
console.log(`Catched: ${err}`);
}
}
MongoClient.connect(config.url, config.options, (err, db) => {
if (err) { throw new Error('This is error'); }
});