簡體   English   中英

是否可以運行JavaScript(NodeJS)命令/函數,並在出現錯誤時讓程序繼續運行?

[英]Is it possible to run a JavaScript (NodeJS) command/function and let the program continue if there's an error?

我想知道是否有一種方法可以在JavaScript中運行一個函數,如果運行該函數時出錯,則讓程序忽略它?

player.play('./sounds/throughQueue.mp3', function(err){
                                   if (err) throw err
                                   })

幾乎沒有“ throw err”的情況。

該程序應繼續。

期待您的回答。

正如您在評論中提到的那樣,您想知道如何處理異步函數錯誤。 您可以執行以下操作:

function myAsyncFunction(){
  return new Promise((resolve, reject) => {
    // do some async anction that returns error
    foo.asyncCall((err, item) => err && reject(err))
  }
}

myAsyncFunction().catch(e => console.error(e))

如果您觀察到以上代碼,則異步錯誤的處理方式有兩種:

  1. 回調函數通常會返回1st arg錯誤,您可以執行if (err)並在其中添加任何邏輯。 或者只是忽略它。
  2. Promise ,可以使用reject ,它是構造函數中的第二個參數。 而且當您拒絕錯誤時,可以在該Promise使用.catch方法,並使用所需的任何自定義邏輯,無論是新的Promise調用還是函數回調。

注意我在回調函數中使用了console.error ,您在那里什么都不做,它將被忽略(您的程序將繼續)

是的 ,您可以忽略回調/承諾錯誤或吞下try / catch捕獲的錯誤,但是它只能使執行繼續進行,而不能使行為或結果正確無誤。

  1. 如果在回調函數中,您可以忽略具有空錯誤處理的錯誤,並且執行也不會中斷, 但是行為仍然取決於調用中是否存在錯誤
  2. 如果承諾,您也可以忽略捕獲的錯誤。
  3. 如果采用異步/等待方式,則必須嘗試/捕獲調用並吞下捕獲的err。

總之,我建議您處理可能的錯誤。 畢竟,高質量的軟件才是我們想要的。 並且可能發生的事情最終會發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM