[英]how can i solve a throw issue in mysql?
我想再次發送 (err) => { if (err) throw Error("error: insert client"); },在 function 中調用它但 try catch 不工作,我應該使用 promise? 還是回調? 因為 function 發送郵件是同樣的問題,我認為它更清楚嘗試像第一個示例一樣使用 try catch,但我不確定。 謝謝您的幫助。
const somefunction = ( res, req ) => {
try
{
registerClient( 2, res.data);
sendMail( "user@gmail.com", "welcome" );
}
catch( e )
{ res.send( e ) }
}
const registerClient = (id, data) => {
const time = new Date();
const query =
"INSERT INTO clientes( name, lastname, date, fk_user, type ) " +
"VALUES ( ?, ?, ?, ?, 'client' )";
connection.query(
query,
[data.name, data.lastname, time, id, ],
(err) => {
if (err) throw Error("error: insert client");
}
);
};
我應該使用 promise 嗎? 還是回調?
是的。
try/catch
塊是同步的,因此它無法捕獲異步拋出。
在你的代碼中:
(err) => {
if (err) throw Error("error: insert client");
}
錯誤“保留”在箭頭 function 內並且不會冒泡,因為它是異步執行的(在數據庫 I/O 之后)。
這里有一個你可以玩的回調例子:
const somefunction = (res, req) => {
registerClient(2, res.data, (err) => {
if (err) {
res.send(e)
} else {
sendMail('user@gmail.com', 'welcome') // fire and forget style (?)
res.send('done')
}
})
}
const registerClient = (id, data, cb) => {
const time = new Date()
const query =
'INSERT INTO clientes( name, lastname, date, fk_user, type ) ' +
"VALUES ( ?, ?, ?, ?, 'client' )"
connection.query(
query,
[data.name, data.lastname, time, id],
cb
)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.