在JavaScript 的Async/Await 函數中,通常會聲明在try 之外等待表達式的變數...catch 區塊以確保稍後可存取。然而,最佳實踐是盡量減少 try 主體中的業務邏輯,以有效處理異常。
try { const createdUser = await this.User.create(userInfo); console.log(createdUser); // Business logic goes here } catch (error) { console.error(error); // from creation or business logic }
此方法可確保所有異常,包括來自業務邏輯的異常,被捕獲。
如果您只想從承諾,請考慮以下選項:
在區塊外宣告變數並透過分支處理錯誤:
let createdUser; try { createdUser = await this.User.create(userInfo); } catch (error) { console.error(error); // from creation } if (createdUser) { // User was created successfully console.log(createdUser); // Business logic goes here }
檢查擷取的異常的類型並進行相應處理:
try { const createdUser = await this.User.create(userInfo); // User was successfully created console.log(createdUser); // Business logic goes here } catch (error) { if (error instanceof CreationError) { console.error(error); // from creation } else { throw error; } }
提供簡單性和正確性的try...catch 的替代方法是使用.then() 回調:
await this.User.create(userInfo).then( (createdUser) => { // User was created successfully console.log(createdUser); // Business logic goes here }, (error) => { console.error(error); // from creation } );
考慮每個選項的優點和缺點根據您的具體要求。
以上是如何在 JavaScript 中正確使用 Try...Catch 和 Async/Await?的詳細內容。更多資訊請關注PHP中文網其他相關文章!